绘制精灵后android opengl速度减慢

绘制精灵后android opengl速度减慢,android,opengl-es,Android,Opengl Es,很抱歉,这篇文章的标题不是描述性的,但我只是无法表达它(如果你想到一个更好的标题,请建议一个) 我当前引擎的一部分调用一个四边形,以便为动态灯光反复渲染。。。它似乎工作得很好,但由于一些奇怪的原因,在创建了几盏灯之后,游戏仍然像绘制它们一样缓慢。。。我想知道我的drawSprite函数是否在内存中留下了一些东西 以下是调用该函数的函数的精简版本: public void lightBlock(GL10 gl, int _x, int _y, float shade) {

很抱歉,这篇文章的标题不是描述性的,但我只是无法表达它(如果你想到一个更好的标题,请建议一个)

我当前引擎的一部分调用一个四边形,以便为动态灯光反复渲染。。。它似乎工作得很好,但由于一些奇怪的原因,在创建了几盏灯之后,游戏仍然像绘制它们一样缓慢。。。我想知道我的drawSprite函数是否在内存中留下了一些东西

以下是调用该函数的函数的精简版本:

    public void lightBlock(GL10 gl, int _x, int _y, float shade)
    {   

        if (map[_x][_y].Type()==1)
        {
        gl.glPushMatrix();
        gl.glTranslatef(_x*2,getFH(_x,_y)+.01f,_y*2);
        gl.glRotatef(90,1, 0, 0);
        gl.glScalef(2, 2, 0);
        gl.glColor4f(shade,shade,shade, 1f);
        drawSprite(gl,0);

        gl.glPopMatrix();

        gl.glPushMatrix();
        gl.glTranslatef(_x*2,getRH(_x,_y)-.01f,_y*2);
        gl.glRotatef(-90,1, 0, 0);
        gl.glScalef(2, 2, 0);
        gl.glColor4f(shade,shade,shade, 1f);
        //Draw the vertices
        drawSprite(gl,0);

        gl.glPopMatrix();
        }

    }

    public void drawSprite(GL10 gl, int tex)
    {
        gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);
        gl.glEnableClientState(GL10.GL_TEXTURE_COORD_ARRAY);
        gl.glBindTexture(GL10.GL_TEXTURE_2D, tex);      
        //defines the vertices we want to draw
        gl.glVertexPointer(3, GL10.GL_FLOAT, 0, SvertexBuffer);
        gl.glTexCoordPointer(2, GL10.GL_FLOAT, 0, StexBuffer);

        //Draw the vertices
        gl.glDrawElements(GL10.GL_TRIANGLES,  6, GL10.GL_UNSIGNED_SHORT,  SindexBuffer);
        gl.glDisableClientState(GL10.GL_VERTEX_ARRAY);
        gl.glDisableClientState(GL10.GL_TEXTURE_COORD_ARRAY);
    }
如果灯未使用,则不调用这些函数。。。但奇怪的是,一旦他们被多次呼叫,游戏运行的速度就像他们同时运行一样慢。。。只要我注释掉“drawSprite()”调用,它就会正常运行

在“onDrawFrame”函数中调用灯光


任何帮助都会很好…

您检查过没有制作太多的对象吗

我遇到了一个问题,它变得越来越慢,结果我没有清除我的“addToScene”列表。这意味着我在游戏中添加的每一帧都是其他所有实体的集合

如果你用精灵来做这件事,如果你注释掉那些需要时间的东西,你就不会注意到它的速度变慢了