根据http://www.opengl.org/sdk/docs/man/xhtml/glFramebufferTexture.xml,调用glFramebufferTexture应该类似于:
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, textureId, 0);
如果API已经知道textureId为什么它也需要知道target(GL_TEXTURE_2D)?这是否意味着在此调用之前应该绑定纹理?即我需要打电话:
glBindTexture(GL_TEXTURE_2D, textureId);
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, textureId, 0);
glBindTexture(GL_TEXTURE_2D, 0);
Run Code Online (Sandbox Code Playgroud)
或者会glFramebufferTexture2D处理一切?
Nic*_*las 15
它是因为愚蠢而存在的.
请参阅将立方体贴图的面附加到FBO的方法是使用立方体贴图面纹理目标之一.因此,如果要绑定立方体贴图的+ X面,则使用GL_TEXTURE_CUBE_MAP_POSITIVE_X?目标.纹理的绑定目标(如果你绑定它)将是GL_TEXTURE_CUBE_MAP,但是当你想要将一个面附加到FBO时,这不是你传递给它的东西textarget.
这是愚蠢的,因为OpenGL还提供了glFramebufferTextureLayer不带textarget参数的函数.它只从对象中正确识别纹理的类型.它适用于3D纹理,1D和2D数组,甚至立方体贴图阵列纹理.但它不适用于非阵列立方体贴图; 你仍然必须使用glFramebufferTexture2D愚蠢的textarget参数愚蠢.
根据所有权利,您应该使用的唯一功能是glFramebufferTextureLayer和glFramebufferTexture.但由于glFramebufferTextureLayer无法在非数组立方体贴图面上工作,您必须使用glFramebufferTexture2D非数组立方体贴图的面.
感谢ARB_direct_state_access(以及OpenGL 4.5),这种白痴不再适用.glFramebufferTextureLayer现在可以在非数组立方体贴图面上使用,所以现在没有任何基于尺寸的FramebufferTexture函数.因此,没有意义textarget.
| 归档时间: |
|
| 查看次数: |
2598 次 |
| 最近记录: |