rendered paste bodyglUseProgramObjectARB(currentProgramObject);
// Setup samplers //
int sampler1 = glGetUniformLocationARB(currentProgramObject, shaderParam);
glActiveTextureARB(GL_TEXTURE0_ARB + imgUnit);
glEnable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D, textureObject1);
glUniform1iARB(sampler1, imgUnit);
int sampler2 = glGetUniformLocationARB(currentProgramObject, shaderParam2);
glActiveTextureARB(GL_TEXTURE0_ARB + nextImgUnit);
glEnable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D, textureObject2);
glUniform1iARB(sampler2, nextImgUnit);
// Setup vertex format pointers //
glEnableClientState(GL_VERTEX_ARRAY);
glClientActiveTextureARB(GL_TEXTURE0 + 0);
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
glClientActiveTextureARB(GL_TEXTURE0 + 1);
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
// Bind vertex buffer //
glBindBufferARB(GL_ARRAY_BUFFER_ARB, vertexBufferObject);
glVertexPointer(vSize, vFormat, vSize, offset);
glClientActiveTextureARB(GL_TEXTURE0 + 0);
glTexCoordPointer(txSize, txFormat, txSz, offset);
glClientActiveTextureARB(GL_TEXTURE0 + 1);
glTexCoordPointer(txSize2, txFormat2, txSz2, offset);
// Bind Index buffer //
glBindBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB, indexBufferObject);
// Render //
glDrawElements(GL_TRIANGLES, indexCount, 2, offset);
// Disable shader
glUseProgramObjectARB(0);
///////////////////////////////////////////////////////////////////////////////////
vertex program
///////////////////////////////////////////////////////////////////////////////////
varying vec2 baseTexCoords;
varying vec2 lmTexCoords;
void main(void)
{
gl_Position = ftransform();
baseTexCoords = gl_MultiTexCoord0.xy;
lmTexCoords = gl_MultiTexCoord1.xy;
}
//////////////////////////////////////////////////////////////////////////////
fragment program
////////////////////////////////////////////////////////////////////////////
uniform sampler2D baseTex;
uniform sampler2D lmTex;
varying vec2 baseTexCoords;
varying vec2 lmTexCoords;
void main(void)
{
vec4 baseCol = texture2D(baseTex, baseTexCoords);
vec4 lmCol = texture2D(lmTex, lmTexCoords);
gl_FragColor = baseCol * lmCol;
}