我的世界被分割成一个八叉树(tris 被自动分割),每个卡盘都有自己的索引缓冲区(vbo 是共享的)。我已经将 FBO 设置为在一个简单且最小的预通行证上写入深度纹理,但我很难想象下一步。
我希望从前到后组织平截头体(从八叉树返回)中的块,然后将其渲染到深度纹理。如果没有发生写入,则可以假定卡盘是隐藏的。但是,我不知道在 opengl 中是否可以进行这样的测试,因为我一直相信在绑定 FBO 时您无法读取深度纹理。另外,我不知道如何进行这样的比较测试(FBO可以这样使用吗?)
另一种方法是使用最终深度纹理进行最终渲染(将其传递给片段着色器),并消除被认为低于从预通道(早期 Z?)获取的深度纹理中确定的值的片段.
我可以选择第二种方法,但更愿意关闭块以最小化绘制调用和材质绑定。
我希望有人能对这个问题有所了解,因为我一直在寻找“最好的方法”来做到这一点,但我对这些方法和 FBO 的了解相对有限,我只将 FBO 用于阴影贴图灯。
很抱歉打扰 - 我知道硬件遮挡测试,但希望实现一个不需要“等待”的更通用的深度遮挡系统。
编辑:请注意,对于预通行证,我只打算渲染一个紧贴的边界框开始。