Java 纹理顶点缓冲区对象

Java 纹理顶点缓冲区对象,java,opengl,vbo,lwjgl,vertex-buffer,Java,Opengl,Vbo,Lwjgl,Vertex Buffer,我想做的是用OpenGL绘制一个(大)地形。所以我有一组顶点,比如说256 x 256,我存储在VRAM中的顶点缓冲区对象中。我正确地对它们进行了三角剖分,所以我有一个面索引缓冲区 // vertexes glBindBufferARB(GL_ARRAY_BUFFER_ARB, vertexBufferId); glVertexPointer(3, GL_FLOAT, 0, 0); // textures glBindBufferARB(GL_ARRAY_BUFFER_ARB, texCoord

我想做的是用OpenGL绘制一个(大)地形。所以我有一组顶点,比如说256 x 256,我存储在VRAM中的顶点缓冲区对象中。我正确地对它们进行了三角剖分,所以我有一个面索引缓冲区

// 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()需要与顶点一样多的纹理坐标

因此,我不知道如何使用VBO实现这一点。也许有更好的概念来解决我的问题,或者我只是缺少一个好主意


提前感谢。

如果纹理在每个四边形中重复(或镜像),最好的方法是使用与数组中(x,y)位置数匹配的纹理坐标。例如,对于第一行顶点,使用这些纹理坐标:(0.0,0.0),(1.0,0.0),(2.0,0.0)…(255.0,0.0)。

由于您可能希望纹理无缝平铺,您只需为每个顶点计算适当的纹理坐标,并像顶点一样传递它们