Opengl es Opengl ES-有没有办法加快我的渲染速度?
我有一个有纹理的正方形。我用这个方法画它:Opengl es Opengl ES-有没有办法加快我的渲染速度?,opengl-es,Opengl Es,我有一个有纹理的正方形。我用这个方法画它: public void draw(GL10 gl) { gl.glEnableClientState(GL10.GL_VERTEX_ARRAY); gl.glVertexPointer(3, GL10.GL_FLOAT, 0, vertexBuffer); if (mShouldLoadTexture) { loadGLTexture(gl); mShouldL
public void draw(GL10 gl) {
gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);
gl.glVertexPointer(3, GL10.GL_FLOAT, 0, vertexBuffer);
if (mShouldLoadTexture) {
loadGLTexture(gl);
mShouldLoadTexture = false;
}
if (mTextureId != -1 && mTextureBuffer != null) {
gl.glEnable(GL10.GL_TEXTURE_2D);
gl.glEnableClientState(GL10.GL_TEXTURE_COORD_ARRAY);
gl.glTexCoordPointer(2, GL10.GL_FLOAT, 0, mTextureBuffer);
gl.glBindTexture(GL10.GL_TEXTURE_2D, mTextureId);
}
gl.glDrawArrays(GL10.GL_TRIANGLE_FAN, 0, 4);
if (mTextureId != -1 && mTextureBuffer != null) {
gl.glDisableClientState(GL10.GL_TEXTURE_COORD_ARRAY);
}
gl.glDisableClientState(GL10.GL_VERTEX_ARRAY);
}
public void onDrawFrame(GL10 gl) {
gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);
...
for (int i=0; i<50; i++) {
...loadidentity
...translatef
...rotatef
...alphaenabled
square1.draw(gl);
...alphadisabled
}
...etc
我只有10+10纹理和动画,混合方块,在HTC Legend上我得到48 FPS,Galaxy S得到60 FPS
当我把10+10+40纹理和动画,混合方块,在一个HTC传奇我得到14-20 FPS,银河S再次得到60 FPS
有没有办法加速我的应用程序和FPS?还是我做错了什么 最基本的优化方法是最小化状态更改,在这种情况下,切换纹理代价很高,因此对绘制调用进行排序,使其最小化纹理开关的数量绑定纹理A,使用该纹理绘制所有正方形,然后切换到纹理B,使用该纹理绘制所有正方形,等等
这同样适用于混合。这没有多大帮助。。我重写了,但没什么不同