- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我生成这样的纹理:
GLuint id;
glGenTextures(1, &id);
glBindTexture(GL_TEXTURE_2D, id);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexImage2D(
GL_TEXTURE_2D, 0,
GL_RGBA16,
//GL_RGBA16F_ARB, //< Won't work
256, 256, 0, GL_RGBA, GL_FLOAT, NULL
);
glBindTexture(GL_TEXTURE_2D, 0);
我将它附加到帧缓冲区对象 (FBO) 以进行渲染。当我将内部格式设置为 GL_RGBA16
时,所有这一切都非常有效。但是,我需要更高的动态范围,并且认为 GL_RGBA16F_ARB
可能会成功。
不幸的是,如果我在上面给出的代码中将 GL_RGBA16
替换为 GL_RGBA16F_ARB
,纹理似乎停止工作。我尝试渲染到 FBO/纹理棒的任何东西,当我使用它包含随机垃圾的纹理时。 (很多紫色,事实证明)如果我收到一条错误消息提示可能出了什么问题,但我似乎找不到,这就不会那么令人沮丧了。换句话说,glGetError()
在 glTexImage2D
调用后返回 0
,而 glCheckFramebufferStatusEXT(GL_FRAMEBUFFER_EXT)
返回 GL_FRAMEBUFFER_COMPLETE_EXT
当我附加了纹理
我还没有弄乱 glClampColorARB(...)
... :)
GL_RGBA16F_ARB
- 纹理是否需要任何我没有给予的特殊处理?我很困惑,因为使用 GL_RGBA16
一切都很顺利... :(
编辑:当使用 GL_RGBA16F_ARB
时,我尝试渲染到屏幕的第一帧没有成功。在我看来,我应该在某处收到一条错误消息......?
编辑:通过检查 ShadowIce 的工作代码示例,我发现如果我更改我的 FBO 上的深度缓冲区并提供 glRenderBufferStorageEXT(. ..)
GL_DEPTH_COMPONENT24
作为它的第二个参数,而不是 GL_DEPTH_COMPONENT16
。我不知道为什么这有效,但显然它确实有效。
此外,如果我在那里进行相反的替换,ShadowIce 的代码会像我的一样中断。
最佳答案
设置带有 float 纹理的帧缓冲区应该没有什么特别的事情要做。我会检查一些事情:
编辑:
我已经编写了一个小的示例应用程序,它应该可以工作,也许有帮助。我只在 Windows 上测试过,所以对于 Linux,您可能需要稍微更改一下:link
关于c++ - 使用 GL_RGBA16F_ARB 纹理时,它只包含废话,但我没有收到任何错误消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/640095/
在 OpenGL 维基中 glTexImage2D ,它写道: internalFormat Specifies the number of color components in the textu
这是片段着色器的代码。 in vec2 TexCoord; uniform sampler2D texture1; out vec4 OutColor; void main() { O
我正在尝试在其颜色缓冲区中设置一个带有 alpha channel 的 OpenGL 窗口。不幸的是,我当前的设置正在创建一个 GL_RGB 后台和前台缓冲区(如 gDEBugger 所报告,以及我的
你好废土的人们:), 简述:iOS平台GL_RGB内部纹理格式存在问题。 在我的应用程序中,我尝试通过使用 GL_RGB 而不是 GL_RGBA 作为内部格式来节省一些内存。我正在使用下一个代码片段来
我是一名优秀的程序员,十分优秀!