问题标签 [opengl-4]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
opengl - 不可变纹理是否需要 GL_TEXTURE_MAX_LEVEL?
当使用函数分配纹理时glTexImage*
,我知道我需要设置glTexParameteri(GL_TEXTURE_MAX_LEVEL)
一个合理的值并指定所有级别直到该值,如此处所述。
我没想到在glTexStorage*
函数的情况下也需要这样做,因为它们接受层数作为参数并预先为该层数分配内存。尽管如此,我注意到我无法对以这种方式定义的不可变纹理进行采样 - 直到我调用或glGenerateMipmap
指定.GL_TEXTURE_MAX_LEVEL
levels-1
我没有找到任何必要的官方理由,并且我希望不可变纹理的参数是不可变的(并且初始化良好)。有人可以确认这种行为是否(以及为什么)正确吗?还是可能是 AMD 驱动程序错误?
opengl-4 - 简单的三角形不会在 opengl 4.3 中绘制
我正在尝试opengl编程,在代码块中加载了一个默认示例,在加载了大量函数指针之后,我在一个窗口中获得了一个opengl 4.3上下文,可以用某种颜色清除(是的! ),所以我继续尝试渲染一个三角形......好吧,它不工作,不知道我哪里出错了。没运气
这是相关的gl代码:
和着色器:
不用说,我将永远感谢任何帮助,可能会让我免于对 OpenGL 感到沮丧!!!
编辑:我只看到清除的背景,以防你想知道......
opengl - 将 RGBA32F 纹理作为 R32F 传递给着色器,用于 imageAtomic 操作和访问组件
是否可以将 3D RGBA32F 纹理作为与 imageAtomic 操作(即 R32F)兼容的类型传递给着色器,然后以某种方式修改 ivec3 索引,以便确定性地访问 RGBA32F 纹理的适当组件?
我知道这对于索引更直接的缓冲区是可能的,但 ivec3 似乎会阻止巧妙的索引操作。
c - OpenGL 窗口错误
我正在尝试在 C 中创建一个简单的 OpenGL 窗口,但我遇到了窗口本身的问题。创建了一个窗口,然后它突然消失了。我通过将“msg”归零来解决这个问题,但是窗口仍然试图退出并且所有其他消息都没有传递。所以我无法通过按 Escape 退出(未通过 WM_KEYDOWN)。渲染图形就像它应该的那样工作。有谁知道这是什么原因,以及如何解决?
入口点.c
主程序
主文件
opengl - 即使使用兼容的显卡和更新的驱动程序,nvidia OpenGL 扩展也不可用
我有一张 440 GT Nvidia 卡。我需要对 opengl 4.3 的支持,其中包含我需要使用的新 GL_NV_bindless_texture 扩展。
我升级了我的驱动程序,正如它所说,OpenGL 4.3 将可用于所有基于 Kepler 或 Fermi 的 GPU。我的在名单上。你可以在这里看到它:
但无论我做什么,我都没有 OpenGL 4.3 支持。我升级了,但它仍然说我在 opengl 4.2 -> 不允许扩展。
怎么会这样?Aren'ti 能够使用这个特殊的扩展?
c++ - 在 OpenGL4.0 中使用交错属性数组获得性能提升
我使用 OpenGL4.X。最近我阅读了这个Apple OpenGLES2 文档,其中指出使用交错属性数组可以提高 IOS 移动设备的性能,并且是推荐的方式(而不是使用属性块)。
对于那些不明白我的意思的人,这里有一个例子:
单个属性数组中的属性块:
交错属性数组:
所以我的问题是:在桌面 GPU 上运行的 OpenGL 也是如此吗?如果是,那么理论上性能增益可以有多大?
opengl - glGenerateMipmap 和 1.#QNAN
我在我的图形引擎(延迟渲染)中实现了 HDR,我需要计算图像的平均亮度(RGBA16F)。我生成 mipmap,然后读取最小的 mipmap (1x1)。
我注意到有时(当我移动相机时)data[0]、data[1] 和 data[2] 包含 1.#QNAN。为什么 ?如何解决?
opengl - 自动生成 mipmap 时 glTexStorage2D 是否必要
我确实使用 gltexSubImage2D() 更新到 OpenGL 4.0 中的纹理 2D。纹理具有使用自动生成的 mipmap
我的纹理更新失败,直到我明白我也必须在更新时重新生成 mipmaps(或删除 mipmaps 生成)。然后我阅读了这个wiki,其中在生成 mipmaps 时使用了glTexStorage2D 。我实际上从未关注过这种方法。所以我想知道每次使用 mipmap 生成纹理时是否必须使用它?
更新 :
我从方法规范中看到它
同时指定二维纹理或一维纹理数组的所有级别的存储要求
我猜使用它应该可以提高生成 mipmap 时的性能?是真的吗?
opengl - Rendering to a texture using the image API (no Framebuffer)
As an experiment I decided to try rendering to a texture using the image API exclusively. At first the results were obviously wrong as the texture write occurred before the depth test. So I enabled the early_fragment_tests
, which I though was introduced for pretty much this type of use case, but now I get a weird sort of flickering which seems like Z-fighting, which seems strange since it should be performing the same depth test that works for regular rendering.
Anyway, I've included an image of the problem, and I'm curious if anyone has an explanation as what is going on, and why this doesn't work. Can it be made to work?
Here's a minimal reproducer
opengl - OpenGL分离程序阶段
我正在探索相对较新的功能 GL_ARB_separate_program_object。我理解的是我必须创建一个管道对象,该对象应该包含来自阶段的着色器,这些着色器通过 glUseProgramStages 映射到那里
这让我想到了使用多个着色器的两种可能性:
1.使用来自一次映射到每个管道的变体顶点/片段着色器对(暂时不使用其他着色器类型)创建多个管道。
2.创建单个管道并在运行时将映射切换到不同的着色器使用
我最关心的是性能。哪个选项更适合性能?