Android OpenGL纹理着色
我正在尝试更改纹理的颜色,我的精灵中有两种渲染方法,一种没有颜色参数,另一种有,如果只渲染一个对象,效果很好,但是如果我渲染一个彩色纹理和一个普通纹理,这两种方法都将着色 我猜我必须以某种方式重置glTextEnvf状态,但我不知道如何重置 这是我的源代码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
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);
希望这有帮助