我刚完成了我的高度图,每行用三角形条纹渲染。我的解决办法是:基于索引的纹理高度图(OpenGL/GLSL)
height=data[k];
coords.push_back((float)col);
coords.push_back((float)(height/heightscale));
coords.push_back((float)row);
k+=3; //red is enough, im using greyscale
和带索引:
for(int row=0;row<infoheader.biHeight-1;row++)
{
for(int col=0;col<infoheader.biWidth;col++)
{
indexes.push_back((row+1)*infoheader.biWidth+col);
indexes.push_back(row*infoheader.biWidth+col);
}
}
我使用VertexArrayObject和drawelements在每行一个循环。 现在我用一个着色器着色基于高度,但我希望它与纹理结合(也基于高度,但仍然不是我的问题)
我想把纹理放在2个三角形形成四,
0,1-1,1
| /|
|/|
|/ |
0,0-1,0
...但我真的不知道如何实现它,我读过有关这一切的话题,但他们没有工作(仅纯色出现或整个地图呈黑色) 。
那么,是否有可能只为第一个“四边形”(2个三角形)创建一个数组,然后通过例如增加索引来纹理整个地图?如果是,我该怎么做。 还有一个问题:我如何在整个地图上放置1个纹理,并在地形上进行缩放。
我可以用一个四边形或一个带有两个三角形的三角形条做它们,但不能用于〜3 000 000个三角形。
主要的问题是索引,因为如果我是对的,它不仅绘制基于索引的顶点位置,还绘制颜色和纹理坐标。
我的地图:http://kepfeltoltes.hu/view/130827/1094341850Untitled_www.kepfeltoltes.hu_.png 我知道它是一个非常“过度”的问题,但我仍然没有找到正确的方法。 编辑:我想瓷砖纹理。
你的天才!:D我从来没有想过我必须在着色器中计算texcoords,但它的工作原理!甚至我不必添加另一个vbo,数组或向量。非常感谢!:D –
http://kepfeltoltes.hu/view/130827/726256227Untitled2_www.kepfeltoltes.hu_.png再次感谢再见!;) –
您不必。你可以在Blender等DCC工具中模拟你的地形,在那里生成UV,导出UV,将它们加载到你的位置并直接从缓冲对象中获取它们。啊,顺便说一句,我敢肯定,不是天才。 ;) – thokra