我一直在編程OpenGL一段時間,但我對OpenGL ES相當陌生。我遇到的一個問題是以高效的方式在屏幕上繪製圖元。頂點陣列性能問題
我要畫一個等於行的循環在屏幕上(有不同的翻譯),並發現此代碼一個巨大的性能下降:
gl.glColor4f(0.5f, 0.5f, 0.5f, 1.0f);
gl.glVertexPointer(3, GL10.GL_FLOAT, 0, this.vertices);
for (int j = 0; j < height; j++)
{
for (int i = 0; i < width; i++)
{
gl.glPushMatrix();
gl.glTranslatef(i, j, 0);
gl.glDrawArrays(GL10.GL_LINE_LOOP, 0, 4);
gl.glPopMatrix();
}
}
我圖說調用glDrawArrays是壞人這裏。
所以問題是如何有效地繪製一堆線循環?使用GL_LINE_LOOP時,必須爲每個基元調用glDrawArrays,所以我需要將類型更改爲GL_LINES嗎?這會造成巨大的內存浪費,因爲頂點數組(在上面的代碼中,包含4個頂點)將保存頂點的寬度*高度*。
我正在爲Android OpenGL ES 1.1進行編程。
「不能分配少於一頁」?是不是在客戶端分配頂點數組? –
@JensÅkerblom:是的。客戶端運行Android,它運行在一個Linux內核上,該內核管理頁面中的內存。 – datenwolf