处理屏幕外的模型 libgdx
Handling models out of screen libgdx
在libgdx2d中,我们过去常常不渲染不在屏幕内的精灵,但是在3d中,据我所知,你绘制了整个场景作为关卡,我的场景很大,我想知道我是否应该处理屏幕外的模型?以及如何?
重建网格以隐藏某些顶点并不实际。您将不得不对网格的构建进行微观管理,并确保您不会隐藏属于仍然可见的三角形的顶点。而且你必须非常小心地重建你的索引数组。在大多数情况下,这是完全不可行的,因为您可能正在建模程序中构建网格。
您的选择是将您的场景建模为多个单独的模型,或者不用担心。这取决于更有意义的复杂性。
如果您有单独的模型网格,您可以为它们计算边界框,然后用 camera.frustum.boundsInFrustum()
测试它们以决定是否应该绘制它们。
请注意,在相机平截头体外绘制的顶点只会让您浪费一些顶点着色器计算,而不是片段着色器计算。在某个时候,您通过跳过某些顶点获得的节省将被计算不需要绘制哪些顶点的成本所消耗。
在libgdx2d中,我们过去常常不渲染不在屏幕内的精灵,但是在3d中,据我所知,你绘制了整个场景作为关卡,我的场景很大,我想知道我是否应该处理屏幕外的模型?以及如何?
重建网格以隐藏某些顶点并不实际。您将不得不对网格的构建进行微观管理,并确保您不会隐藏属于仍然可见的三角形的顶点。而且你必须非常小心地重建你的索引数组。在大多数情况下,这是完全不可行的,因为您可能正在建模程序中构建网格。
您的选择是将您的场景建模为多个单独的模型,或者不用担心。这取决于更有意义的复杂性。
如果您有单独的模型网格,您可以为它们计算边界框,然后用 camera.frustum.boundsInFrustum()
测试它们以决定是否应该绘制它们。
请注意,在相机平截头体外绘制的顶点只会让您浪费一些顶点着色器计算,而不是片段着色器计算。在某个时候,您通过跳过某些顶点获得的节省将被计算不需要绘制哪些顶点的成本所消耗。