OSX OpenGL深度模板组合

时间:2016-08-07 01:11:14

标签: c++ macos opengl

我正在尝试使用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个单独的深度和模板纹理?

1 个答案:

答案 0 :(得分:2)

对此没有抱歉,但事实证明我调试错了。 OSX确实支持模板/深度混合,尽管Apple的文档中没有太多信息。我的错误实际上来自下一行,如下所示:

glDrawBuffers(textureCount, allColorBuffers);

这是错误的,因为texCount包含深度纹理以及所有颜色缓冲区。所以将textureCount更改为textureCount-1就完全解决了这个问题。