我正在開發一個個人Java OpenGL(JOGL)項目,我正在使用一些具有獨立繪圖函數和頂點的自定義對象。我應該使用幾個glDrawArrays()還是將所有頂點收集到一個大的glDrawArrays調用?
public class Cube extends PhysicalObject {
public void draw(GL gl) {
gl.glColor3f(1.0f, 1.0f, 0.0f);
gl.glEnableClientState(GL.GL_VERTEX_ARRAY); // Enable Vertex Arrays
gl.glEnableClientState(GL.GL_TEXTURE_COORD_ARRAY);
gl.glVertexPointer(3, GL.GL_FLOAT, 0, vertices);
gl.glTexCoordPointer(2, GL.GL_FLOAT, 0, texCoords);
gl.glDrawArrays(GL.GL_QUADS, 0, 4*6);
gl.glDisableClientState(GL.GL_VERTEX_ARRAY);
gl.glDisableClientState(GL.GL_TEXTURE_COORD_ARRAY);
}
然後我通過一大堆這些立方體循環,調用它們的繪製函數。 我的問題如下: 我應該把所有的頂點都收集到一個大的glDrawArrays調用中,即把所有的頂點都收集到一個大的數組中並繪製它?它對性能和fps有很大的幫助嗎?
我不確定您的意思是「列表」。 ArrayList或VertexBufferObject,還是我在這裏忽略了一點? – JulenissensHjelper 2012-04-14 19:25:20
我的appologies,如果它不清楚...他們被稱爲「CallList」或「DisplayList」。 http://www.swiftless.com/tutorials/opengl/displaylists.html – Erwald 2012-04-14 19:27:45
好的,謝謝......我會研究一下。 – JulenissensHjelper 2012-04-14 19:31:33