Android - OpenGL ES 1.1的高fps下降

时间:2013-09-09 20:24:54

标签: android opengl-es

我正在尝试制作一个简单的2D游戏。我注意到onDrawFrame()函数在带有vsync的60 FPS中调用。然而,由于某些原因,如果渲染时间超过1毫秒,旧设备会出现某些原因,它会每隔几帧跳过一帧,动画看起来并不平滑。我说的是不太旧的设备...

90%的绘图代码如下所示:

        gl.glBindTexture(GL11.GL_TEXTURE_2D, MainProgram.glSurfaceView.renderer.ResourceIdToTexture(R.drawable.tank));
        gl.glFrontFace(GL11.GL_CW);
        gl.glVertexPointer(3, GL11.GL_FLOAT, 0, vertexBuffer);
        gl.glTexCoordPointer(2, GL11.GL_FLOAT, 0, tankTextureBuffer);
        float[] glCoords = World.WorldCoordsToGLCoords(tank.GetPosition().PosX(), tank.GetPosition().PosY());
        float[] glDims = {0.025f, 0.025f};
        gl.glPushMatrix(); 
        gl.glTranslatef(glCoords[0], glCoords[1]+glDims[1], -1.0f);
        gl.glScalef(glDims[0], glDims[1], 1.0f);
        float[] tc = tank.GetOwner().GetColor().asFloatArray();
        gl.glColor4f(tc[0],tc[1],tc[2],tc[3]);
        gl.glDrawArrays(GL11.GL_TRIANGLE_STRIP, 0, vertex.length / 3);
        gl.glColor4f(1f, 1f, 1f, 1f);
        gl.glPopMatrix();

然而,将所有图纸处理到屏幕需要1毫秒,我注意到FPS(我已经测量了每秒调用surfaceView.drawFrame的计时器数量)从60下降到30左右它看起来几乎令人作呕。 即使在最老的设备上,其他游戏如何拥有如此流畅的动画? 我如何用GLES11实现这个目标?

0 个答案:

没有答案