我正在修改我的地形渲染器,现在它使用带有着色器的 gpu 镶嵌,采用投影网格样式方法:网格居中并通过找到它后面最近的网格点定位在相机周围,使其成为中心。(skytiger 的方法是有点返工)它运行良好,直到我关闭“重新定位方法”,然后转到网格边缘。
由于曲面细分算法正在测试中,我使用简单距离相机类型曲面细分,外部 tess 因子取决于边缘中心点到相机的距离,以及内部到四边形补丁中心点到相机的距离。当我四处走动时,我跑得很好,但是当我靠近网格边缘时,就我而言,在 (0,0,0) 时,我得到了可怕的滞后。
我在曲面细分着色器中使用 VBO、VAO、高度图采样器,没有平截头体剔除(还),没有曲面细分剔除屏幕(还),我的地图宽度是 2^n*GRIDSCALE,n 和 GRIDSCALE 取决于截锥体。我用 8192*8192 的地图对其进行了测试。相机解锁(未居中)的平均 fps 约为 60-70,但 P(0,0,0) 约为 8-15。
我在没有 cpu LOD 的情况下渲染了整个测试网格,只使用了 gpu tessellation。
什么可能导致这种情况?
编辑:当我制作我的第一个高度图时,我遇到了这种滞后,它是带有 VBO 和索引数组的三角形条带的简单静态网格。当我将相机移动到地图中心时,(它不是(0,0,0))或'z-'方向的'z'轴上半部分,并向下看'z+'轴我得到了滞后。
这是滞后的观点。大约 (0,0,0)。其他地方运行平稳。
编辑:点不在(0,0,0),我只是没有考虑顶点着色器变换,所以地形四边形中心是(0,0,0),右下角是(+MAPWIDTH ,0,+MAPWIDTH)(图中的角落)在其他角落没有任何滞后。