我剛完成了我的高度圖,每行用三角形條紋渲染。我的解決辦法是:基於索引的紋理高度圖(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