我已经编写 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 个顶点)将保存宽度 * 高度 * 8个顶点。
我正在为 Android OpenGL ES 1.1 编程。