我想使用glDrawElements绘制一个多边形。使用glDrawArrays一切都很好,但没有绘制glDrawElements。
这是我的代码:
float[] polys = {
0f,0f,0f,
0f,0f,-1f,
-1f,0f,-1f,
-1f,0f,0f
};
int[] indexs = {
0,1,2,
3,4,5,
6,7,8,
9,10,11
};
float[] texs = {
0f,0f,
0f,1f,
1f,1f,
1f,0f
};
FloatBuffer buff_polys = new FloatBuffer(polys.length).put(polys).normalize();
IntegerBuffer buff_indexs = new IntegerBuffer(indexs.length).put(indexs).normalize();
FloatBuffer buff_texs = new FloatBuffer(texs.length).put(texs).normalize();
GL11.glVertexPointer(3, 0, buff_polys.getBuffer());
GL11.glTexCoordPointer(2, 0, buff_texs.getBuffer());
//GL11.glDrawArrays(GL11.GL_QUADS, 0, buff_polys.size()/3);
GL11.glDrawElements(GL11.GL_QUADS, buff_indexs.getBuffer());
帮助!可能是什么问题?
答案 0 :(得分:0)
索引是指顶点(x,y,AND z),而不是顶点组件(x,y OR z)。
float[] polys = {
0f,0f,0f, // Vertex 0
0f,0f,-1f, // Vertex 1
-1f,0f,-1f, // Vertex 2
-1f,0f,0f // Vertex 3
};
尝试像这样定义你的指数:
int[] indexs = { 0, 1, 2, 3 };
答案 1 :(得分:0)
顶点有三个值,因此你的多边形浮点数组中有四个顶点:0,1,2和3.索引数组必须引用其中一个。如果你输入一个不存在的索引(4及以上)几乎肯定会出现问题(取决于你正在使用的OpenGL的实现)。