微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

OPENGL ARB_occlusion_query遮挡剔除

如何解决OPENGL ARB_occlusion_query遮挡剔除

|
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 等等...

解决方法

我不确定我是否理解正确,但这不是天真的实现的缺点之一,即首先渲染所有框(而不是写入深度缓冲区),然后使用查询结果检查每个对象吗?但是您建议立即使用单个框的查询结果是一种更为幼稚的方法,因为这会使管道停滞。如果您进一步阅读本章(假设您参考第29章),它们将提供一种简单的技术来克服两种幼稚方法的缺点(即,仅正常呈现所有内容并使用前一帧的查询结果)。,我认为(链接GPU宝石文章本来很好...),您对诸如此类扩展中所述的某种异步查询感到困惑: http://developer.download.nvidia.com/opengl/specs/GL_NV_conditional_render.txt 如果我没记错的话,还有其他扩展可以检查结果的可用性,而不会阻塞。 正如克里斯蒂安·劳(Christian Rau)指出的那样,仅执行“查询,等待结果,基于结果进行操作”可能会停顿,因此可能不会有任何收益,具体取决于“执行任务”中的工作量。实际上,进行查询,等待往返以保存一个绘图调用几乎完全没有帮助。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?