【发布时间】:2014-05-14 16:20:55
【问题描述】:
我正在使用 FBO 将场景绘制到纹理并读取像素以选择我的对象。
问题是绘制到纹理中忽略了深度
左边是场景,右边是纹理(出于调试原因将其保存到文件中)。 如您所见,有 2 个平面一个在另一个之上,而前面的一个则更向上。虽然在纹理上是相反的。这使得用户在看到另一架飞机时会在背景中选择飞机。
我尝试启用我想到的一切,但我想我错过了一些东西。
【问题讨论】:
-
FBO 是否有深度缓冲区?如果没有,就没有深度可以测试
-
还要确保启用深度测试
glEnable(GL_DEPTH_TEST)和深度写入glDepthMask(GL_TRUE)。 -
我也试过了。但还是一样,我得到了相同的结果。
-
棘轮怪胎-我该怎么做?我今天要做的是创建纹理,然后创建帧缓冲区 -
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, m_uintFBTex, 0);。我可以将深度缓冲区添加到同一纹理吗? -
通过为深度创建渲染缓冲区来解决它。
标签: opengl textures framebuffer depth-buffer