Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Opengl es Opengl ES-有没有办法加快我的渲染速度?_Opengl Es - Fatal编程技术网

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,使用该纹理绘制所有正方形,等等


这同样适用于混合。

这没有多大帮助。。我重写了,但没什么不同