2013-07-12 69 views
1

我想使用glDrawElements繪製多邊形。使用glDrawArrays一切都很好,但沒有任何繪製glDrawElements。lwjgl glDrawElements not draw

這裏是我的代碼:

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

索引指頂點(x,y,AND z),而不是頂點分量(x,y或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 }; 
0

一個頂點有三個值,所以你必須在你的多邊形四個頂點浮點數組:0,1,2和3的指數陣列必須參考其中之一。如果你輸入一個不存在的索引(4以上),幾乎肯定會有問題(取決於你正在使用的OpenGL的實現)。