|
|
发表于 2009-5-6 09:50:00
|
显示全部楼层
Re: OPENGL ES1.1如何做多纹理混合?
终于找到方法了适用于OpenGL ES 1.1
初始化:
// Set vertex data
glEnableClientState(GL_VERTEX_ARRAY);
glVertexPointer(3, VERTTYPEENUM, sizeof(VERTTYPE) * 5, 0);
// Set texture data
//Set the texture data for the first texture.
glClientActiveTexture(GL_TEXTURE0);
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
glTexCoordPointer(2, VERTTYPEENUM, sizeof(VERTTYPE) * 5, (GLvoid*) (sizeof(VERTTYPE) * 3));
/*
Set the texture for the second texture. In this case we are just reusing the first
set of texture coordinates.
*/
glClientActiveTexture(GL_TEXTURE1);
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
glTexCoordPointer(2, VERTTYPEENUM, sizeof(VERTTYPE) * 5, (GLvoid*) (sizeof(VERTTYPE) * 3));
// Enable 2D texturing for the first texture.
glActiveTexture(GL_TEXTURE0);
glEnable(GL_TEXTURE_2D);
// Enable 2D texturing for the second texture.
glActiveTexture(GL_TEXTURE1);
glEnable(GL_TEXTURE_2D);
渲染:
// Set up the First Texture
glActiveTexture(GL_TEXTURE0);
glEnable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D, m_ui32Stamp);
// Set up the Second Texture
glActiveTexture(GL_TEXTURE1);
glEnable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D, m_ui32Crate);
GLfloat constColor[4] = { 0.0, 0.0, 0.0, 0.0 };
constColor[3] = 0.5;
glTexEnvfv(GL_TEXTURE_ENV, GL_TEXTURE_ENV_COLOR, constColor);
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE);
glTexEnvf(GL_TEXTURE_ENV, GL_COMBINE_RGB, GL_INTERPOLATE);
glTexEnvf(GL_TEXTURE_ENV, GL_SRC0_RGB, GL_TEXTURE);
glTexEnvf(GL_TEXTURE_ENV, GL_OPERAND0_RGB, GL_SRC_COLOR);
glTexEnvf(GL_TEXTURE_ENV, GL_SRC1_RGB, GL_PREVIOUS);
glTexEnvf(GL_TEXTURE_ENV, GL_OPERAND1_RGB, GL_SRC_COLOR);
glTexEnvf(GL_TEXTURE_ENV, GL_SRC2_RGB, GL_CONSTANT);
glTexEnvf(GL_TEXTURE_ENV, GL_OPERAND2_RGB, GL_SRC_ALPHA); |
|