lwjgl glDrawElements没有绘制

时间:2013-07-12 18:10:46

标签: java opengl lwjgl

我想使用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());

帮助!可能是什么问题?

2 个答案:

答案 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的实现)。