我对 OpenGL很陌生。
我正在尝试绘制带纹理的四边形(2 个三角形)。纹理大小为 900x900px。我对一个四边形没有任何问题,但是当我尝试绘制 5-10 个四边形时,我发现速度明显变慢。
也许我做错了什么......
代码:
public void onDrawFrame(GL10 gl) {
GLES20.glClear(GLES20.GL_COLOR_BUFFER_BIT | GLES20.GL_DEPTH_BUFFER_BIT);
... matrix calculation ...
GLES20.glUniformMatrix4fv(mMVPMatrixHandle, 1, false, mvpMatrix, 0);
GLES20.glDrawArrays(GLES20.GL_TRIANGLE_STRIP, 0, 4);
}
顶点着色器:
uniform mat4 uMVPMatrix;
attribute vec4 vPosition;
attribute vec2 a_TexCoordinate;
varying vec2 v_TexCoordinate;
void main() {
gl_Position = uMVPMatrix*vPosition;
v_TexCoordinate = a_TexCoordinate;
}
片段着色器:
precision mediump float;
uniform sampler2D u_PreviewTexture;
varying vec2 v_TexCoordinate;
void main() {
vec4 color = texture2D(u_PreviewTexture, v_TexCoordinate);
gl_FragColor = color;
}
测试平台为 Galaxy S3。在分析器中,我看到大约 60 毫秒需要 eglSwapBuffers 调用。
如何快速绘制具有大纹理的四边形?