首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OPENGL ARB_occlusion_query遮挡剔除

OPENGL ARB_occlusion_query遮挡剔除
EN

Stack Overflow用户
提问于 2011-04-19 20:56:15
回答 2查看 1.4K关注 0票数 5
代码语言:javascript
复制
for (int i = 0; i < Number_Of_queries; i++)
{
    glBeginQueryARB(GL_SAMPLES_PASSED_ARB, queries[i]);

    Box[i]

    glEndQueryARB(GL_SAMPLES_PASSED_ARB);
}

我很好奇GPU GEMS 1中建议的遮挡剔除方法,其中执行了一定数量的查询。使用所描述的方法,您不能对单个盒子进行相互测试,那么您应该执行以下操作吗?

测试盒A ->渲染盒A

测试框B ->渲染框B

测试盒C ->渲染盒C

以此类推。

EN

回答 2

Stack Overflow用户

发布于 2011-08-15 00:38:33

我不确定我是否理解正确,但这不是首先渲染所有框(而不是写入深度缓冲区)然后使用查询结果检查每个对象的天真实现的缺点之一吗?但您建议立即使用单个框的查询结果是一种更幼稚的方法,因为这会使管道停滞不前。如果你进一步阅读了本章(假设你参考了第29章),他们提供了一种简单的技术来克服这两种简单方法的缺点(即,只需正常渲染所有内容并使用前一帧的查询结果)。

票数 2
EN

Stack Overflow用户

发布于 2012-02-04 13:31:50

我认为(链接GPU gems文章会很好…)您可能会对如下扩展中描述的异步查询感到困惑:

http://developer.download.nvidia.com/opengl/specs/GL_NV_conditional_render.txt

如果我没记错的话,还有其他扩展可以在不阻塞的情况下检查结果的可用性。

正如Christian Rau指出的那样,仅仅做“查询,等待结果,基于结果做事情”可能会停滞不前,并且可能不会因此获得任何收益,这取决于“做事情”中有多少工作。事实上,执行查询,等待它往返,仅仅为了保存一个绘制调用,很可能根本没有帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5716679

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档