Android OpenGL纹理着色

Android OpenGL纹理着色,android,opengl-es,textures,Android,Opengl Es,Textures,我正在尝试更改纹理的颜色,我的精灵中有两种渲染方法,一种没有颜色参数,另一种有,如果只渲染一个对象,效果很好,但是如果我渲染一个彩色纹理和一个普通纹理,这两种方法都将着色 我猜我必须以某种方式重置glTextEnvf状态,但我不知道如何重置 这是我的源代码 public void Render(GL10 gl) { gl.glBindTexture(GL10.GL_TEXTURE_2D,textures[0]); gl.glEnableClientState(GL10.GL_VER

我正在尝试更改纹理的颜色,我的精灵中有两种渲染方法,一种没有颜色参数,另一种有,如果只渲染一个对象,效果很好,但是如果我渲染一个彩色纹理和一个普通纹理,这两种方法都将着色 我猜我必须以某种方式重置glTextEnvf状态,但我不知道如何重置

这是我的源代码

public void Render(GL10 gl)
{
   gl.glBindTexture(GL10.GL_TEXTURE_2D,textures[0]);

   gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);
   gl.glEnableClientState(GL10.GL_TEXTURE_COORD_ARRAY);

   gl.glVertexPointer(2, GL10.GL_FLOAT,0, verticesBuffer);
   gl.glTexCoordPointer(2, GL10.GL_FLOAT, 0, textureBuffer);

   gl.glDrawArrays(GL10.GL_TRIANGLE_STRIP,0, vertices.length/2);
   //RESTORE
   gl.glDisableClientState(GL10.GL_VERTEX_ARRAY);
   gl.glDisableClientState(GL10.GL_TEXTURE_COORD_ARRAY);
}
public void Render(GL10 gl,float r,float g,float b)
{
    gl.glBindTexture(GL10.GL_TEXTURE_2D,textures[0]);

    gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);
    gl.glEnableClientState(GL10.GL_TEXTURE_COORD_ARRAY);

    gl.glColor4f(r,g,b,1.0f);
    gl.glTexEnvf(GL10.GL_TEXTURE_ENV, GL10.GL_TEXTURE_ENV_MODE, GL10.GL_MODULATE);


    gl.glVertexPointer(2, GL10.GL_FLOAT, 0, verticesBuffer);
    gl.glTexCoordPointer(2, GL10.GL_FLOAT, 0, textureBuffer);

    gl.glDrawArrays(GL10.GL_TRIANGLE_STRIP, 0, vertices.length / 2);

    //RESTORE
    gl.glDisableClientState(GL10.GL_VERTEX_ARRAY);
    gl.glDisableClientState(GL10.GL_TEXTURE_COORD_ARRAY);
}

在要着色的精灵中调用glDrawArrays后,将颜色设置回1:

gl.glColor4f(1, 1, 1, 1);
希望这有帮助