2008-12-18 129 views
2

我想要做的是用OpenGL繪製(大)地形。所以我有一組頂點,可以說我存儲在VRAM中的頂點緩衝區對象中的256 x 256。我正確地對它們進行三角化,所以我已經有了一個用於臉部的索引緩衝區。紋理頂點緩衝區對象

// vertexes 
glBindBufferARB(GL_ARRAY_BUFFER_ARB, vertexBufferId); 
glVertexPointer(3, GL_FLOAT, 0, 0); 
// textures 
glBindBufferARB(GL_ARRAY_BUFFER_ARB, texCoordBufferId); 
glTexCoordPointer(2, GL_FLOAT, 0, 0); 
// indexes 
glBindBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB, indexBufferId); 
// draw it 
glDrawRangeElements(GL11.TRIANGLES, 0, size - 1, size, GL_UNSIGNED_INT, 0); 

我也加載了一個正方形紋理,必須應用到每個三角形。所以我遇到了紋理座標的問題:

每個頂點都包含在4個三角形中,這意味着它需要4個紋理座標。但是glDrawRangeElements()需要與頂點一樣多的紋理座標。

因此,我不認爲如何與維也納各組織合作。也許有更好的理念來解決我的問題,或者我只是缺乏一個好主意。

在此先感謝。

回答

3

如果您的紋理應該在每個四邊形中重複(或鏡像)自己,最好的方法是使用與您的數組中的(x,y)位置數匹配的紋理座標。例如。對於第一行頂點使用這些紋理座標:(0.0,0.0),(1.0,0.0),(2.0,0.0)...(255.0,0.0)。

+0

謝謝,那是我錯過了... – 2008-12-19 10:27:50

0

由於您可能希望您的紋理可以無縫拼接,因此您只需計算每個頂點的適當紋理座標並像頂點一樣傳遞它們即可。