我遇到了有关遮挡查询的问题。就我而言,查询结果似乎总是比预定的要大。例如我使用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]);
任何人可以帮忙吗?
遮挡查询没有告诉您有多少像素通过了测试。它告诉您有多少片段通过了测试(或更准确地,"样本")。
如果您绘制一个三角形,然后在其前面绘制一个三角形,则遮挡查询也计算出两者的片段,即使较早的三角形被后期的三角形遮住。三角形被抛光。因此,覆盖较早的三角形在闭塞查询计数时尚未被栅栏。这样的自我概括只有在最接近最远的三角形呈现时才计算。