OpenGL / w镶嵌(着色器)lagg - terrain

时间:2013-11-01 15:19:49

标签: c++ opengl terrain tessellation

我正在重新设计我的地形渲染器,现在它使用带有着色器的gpu镶嵌,采用投影网格样式方法:网格居中并定位在摄像机周围,通过查找其后面最近的网格点,使其成为中心。( skytiger的方法有点重做)它运行良好,直到我关闭“重新定位方法”,并转到网格的边缘。

由于曲面细分算法正在测试中,我使用与摄像机类型曲面细分的简单距离,外部tess因子取决于边缘中心点距摄像机的距离,以及内部距四角形补丁中心点的距离。相机。当我四处走动时,我跑得很好,但是当我靠近网格的边缘时,在我的情况下(0,0,0),我得到一个可怕的lagg。

我在曲面细分着色器中使用VBO,VAO,高度图采样器,没有视锥体剔除(还),没有曲面细分剔除屏幕(还),我的地图宽度是2 ^ n * GRIDSCALE,n和GRIDSCALE取决于视锥体。我用8192 * 8192的地图测试了它。相机解锁(非中心)的平均fps约为60-70,但在P(0,0,0)附近则为8-15。

我在没有cpu LOD的情况下渲染了整个测试网格,仅使用了gpu镶嵌。

什么可能导致这种情况?

编辑:当我制作我的第一个高度图时,我遇到了这种滞后,它是带有VBO和索引数组的三角形条带的简单静态网格。当我将相机移动到地图的中心时(它不是(0,0,0))或'z-'方向上的'z'轴的上半部分,并向下看'z +'轴我得到了滞后。

enter image description here

这是一个滞后的观点。大约(0,0,0)。 在其他地方,它运行顺畅。

编辑:不在(0,0,0),我只是没有考虑顶点着色器转换,所以地形四方中心是(0,0,0),右下角是(+ MAPWIDTH,0,+ MAPWIDTH)(图片中的角落) 在其他角落没有任何lagg。

0 个答案:

没有答案