硬件遮挡查询结果似乎不准确



我遇到了有关遮挡查询的问题。就我而言,查询结果似乎总是比预定的要大。例如我使用1024*1024分辨率进行渲染,但是场景中对象的查询结果是2085029(> 1024*1024)。

使用的查询方法来自 GPU GEMS 第29章

        glColorMask(GL_FALSE, GL_FALSE, GL_FALSE, GL_FALSE);
        glDepthMask(GL_FALSE);
        glBeginQuery(GL_SAMPLES_PASSED, occlusionQuery[0]);
        mesh->Render();
        glEndQuery(GL_SAMPLES_PASSED);
        glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE);
        glDepthMask(GL_TRUE);
        glGetQueryObjectuiv(occlusionQuery[0], GL_QUERY_RESULT, &screenFragmentCount[0]);

任何人可以帮忙吗?

遮挡查询没有告诉您有多少像素通过了测试。它告诉您有多少片段通过了测试(或更准确地,"样本")。

如果您绘制一个三角形,然后在其前面绘制一个三角形,则遮挡查询也计算出两者的片段,即使较早的三角形被后期的三角形遮住。三角形被抛光。因此,覆盖较早的三角形在闭塞查询计数时尚未被栅栏。这样的自我概括只有在最接近最远的三角形呈现时才计算。

相关内容

  • 没有找到相关文章

最新更新