我正在尝试使用OpenGL 3.2 SDL上下文在OSX 10.11.5上创建一个带有GL_DEPTH_STENCIL_ATTACHMENT TEXTURE的帧缓冲区。似乎以下行创建了OpenGL错误1280:
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_DEPTH_STENCIL_ATTACHMENT, GL_TEXTURE_2D, depthTexture, 0);
此纹理生成如下:
glTexImage2D(GL_TEXTURE_2D, 0, GL_DEPTH32F_STENCIL8, width, height, 0, GL_DEPTH_STENCIL, GL_FLOAT_32_UNSIGNED_INT_24_8_REV, 0);
我知道这是一个OSX问题,因为这段代码曾经在我原来的Arch Linux计算机上运行得很好。我确实阅读了官方tutorial,并没有提到组合深度和模板纹理附件。那么这个功能是不受支持还是我做错了?如果不支持此功能,那么我应该如何替代?创建2个单独的深度和模板纹理?
答案 0 :(得分:2)
对此没有抱歉,但事实证明我调试错了。 OSX确实支持模板/深度混合,尽管Apple的文档中没有太多信息。我的错误实际上来自下一行,如下所示:
glDrawBuffers(textureCount, allColorBuffers);
这是错误的,因为texCount包含深度纹理以及所有颜色缓冲区。所以将textureCount更改为textureCount-1就完全解决了这个问题。