私はしばらくの間OpenGLをプログラミングしてきましたが、OpenGLESはまったく初めてです。私が抱えている問題の1つは、効率的な方法で画面にプリミティブを描画することです。
画面上に(異なる変換で)多数の等しいラインループを描画する必要があり、このコードでパフォーマンスが大幅に低下することに気づきました。
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つの頂点を保持)は幅*高さ* 8の頂点を保持するため、これは膨大なメモリの浪費を課します。
私はAndroidOpenGLES1.1用にプログラミングしています。