
要讓紋理單元使用頂點數組,必須先激活它.
void glClientActiveTexture(GLenum texture);
texture:紋理單元索引GL_TEXTURE0_ARB~GL_TEXTURE31_ARB
啟用紋理單元頂點座標數組
void glEnableClientState(GLenum array);
禁用紋理單元頂點座標數組
void glDisableClientState(GLenum array);
array:GL_TEXTURE_COORD_ARRAY 紋理座標數組
為紋理單元設定指定數組
void WINAPI glTexCoordPointer(Glint size,GLenum type,GLsizei stride,const GLvoid *pointer);
設置兩個紋理單元設置頂點數組
glClientActiveTexture(GL_TEXTURE0_ARB);// 激活紋理0
glEnableClientState(GL_VERTEX_ARRAY); // 啟用頂點數組
glEnableClientState(GL_TEXTURE_COORD_ARRAY); // 啟用紋理座標數組
glVertexPointer(3, GL_FLOAT, 0, terrain->vertex_array);// 頂點數組
glTexCoordPointer(3, GL_FLOAT, 0, terrain->grass_texcoord);// 紋理數組
glClientActiveTexture(GL_TEXTURE1_ARB);// 激活紋理1
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
glTexCoordPointer(3, GL_FLOAT,0, terrain->height_texcoord);// 紋理數組
glDrawArrays(GL_TRIANGLES, 0, polygon_num);// 繪畫所有當前以啟用的頂點數組
glDisable(GL_TEXTURE_1D);// 禁用紋理單元1
glClientActiveTexture(GL_TEXTURE0_ARB);// 重新激活紋理0,這個很重要否則會影響其它紋理貼圖
glDisableClientState(GL_VERTEX_ARRAY); // 禁用頂點數組
glDisableClientState(GL_TEXTURE_COORD_ARRAY); // 禁用紋理座標數組
glDisableClientState(GL_NORMAL_ARRAY);// 禁用法線數組
