【问题标题】:Drawing to FrameBuffer ignores depth test绘制到 FrameBuffer 会忽略深度测试
【发布时间】: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


【解决方案1】:

感谢棘轮怪胎,

我意识到我跳过了深度缓冲区 :)

我只需要为深度组件创建一个渲染缓冲区并将其附加到帧缓冲区对象。

【讨论】:

    猜你喜欢
    • 2014-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-19
    • 1970-01-01
    • 1970-01-01
    • 2022-10-06
    • 1970-01-01
    相关资源
    最近更新 更多