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章),它们将提供一种简单的技术来克服两种幼稚方法的缺点(即,仅正常呈现所有内容并使用前一帧的查询结果)。