0
目前我想知道爲什麼OpenGl需要這麼多時間用LineLoops繪製一些簡單的TriangleFans(用於平滑邊緣)。OpenGL,繪製一些Rects(TriangleFan和LineLoop)需要長達10ms
此循環在每個onDrawFrame()調用中執行。
for (int j = 0; j < 40; j++) {
float rotationAngle= (float) ((j * angle) + angleBegin
- plusAngle+ (angle/ 2f));
GLES10.glPushMatrix();
GLES10.glTranslatef(plusX, 0, 1f);
GLES10.glTranslatef(0.5f * height, 0.5f * height, 0.001f);
GLES10.glRotatef(rotationAngle, 0, 0, 0.9f);
rectObject.render(GL_Meshobject.PrimitiveType.TriangleFan);
rectObject.render(GL_Meshobject.PrimitiveType.LineLoop);
GLES10.glPopMatrix();
}
其呈現40×2(環路)次創建這樣的對象:
rectObject.addColor(0.3f, 0.3f, 0.3f, 1.0f);
rectObject.addVertex(wert1[KOORDS_X], wert1[KOORDS_Y], 0);
rectObject.addColor(0.3f, 0.3f, 0.3f, 1.0f);
rectObject.addVertex(wert2[KOORDS_X], wert2[KOORDS_Y], 0);
rectObject.addColor(0.3f, 0.3f, 0.3f, 1.0f);
rectObject.addVertex(wert4[KOORDS_X], wert4[KOORDS_Y], 0);
rectObject.addColor(0.3f, 0.3f, 0.3f, 1.0f);
rectObject.addVertex(wert3[KOORDS_X], wert3[KOORDS_Y], 0);
什麼是執行這個循環2-10ms之間持續時間的原因是什麼?我該如何解決它?
這個循環的結果是一些不互相連接的矩形,但是有沒有可能將這40個矩形放到一個對象中?
這種方法繪製了我的背景的一部分,是否有可能定義的對象只能在屏幕上渲染一次像「Rendermode Dirty」,但不是整個渲染器,我想避免創建疊加SurfaceViews,但在那裏是我的onDrawFrame中的動態和靜態對象。我只想渲染動態對象,並通過僅渲染一次(在開始處)將靜態內容保留在屏幕上。
嗨,我會在一會兒嘗試這個:)但是所有的矩形應該在同一時間看到,所有的矩形。如果我只在一個onDraw調用中繪製一個Rectangle,我不認爲它似乎是一個背景。 – user983814 2011-12-15 10:59:46