我使用glBindTexture有什么问题?

mik*_*aub 1 c++ opengl

我正在使用2种不同的纹理渲染棋盘.一个用于黑色方块,一个用于白色方块.然而,不是每个不同的正方形都有自己的纹理,它们都采用我绑定的最后一个纹理glBindTexture(GL_TEXTURE_2D, id);.

这是我的方法:

glEnable(GL_TEXTURE_2D);    
glBegin(GL_QUADS);
    // square 0, 0 ( front left )
    glBindTexture(GL_TEXTURE_2D, textureBlackSquare->texID);
    glNormal3f(0, 1, 0);
    glTexCoord2f(0, 0); glVertex3f(-8.0, 0.5,  8.0);
    glTexCoord2f(1, 0); glVertex3f(-6.0, 0.5,  8.0);
    glTexCoord2f(1, 1); glVertex3f(-6.0, 0.5,  6.0);
    glTexCoord2f(0, 1); glVertex3f(-8.0, 0.5,  6.0);
glEnd();

glBegin(GL_QUADS);
    // square 1, 0        
    glBindTexture(GL_TEXTURE_2D, textureWhiteSquare->texID);
    glTexCoord2f(0, 0); glVertex3f(-6.0, 0.5,  8.0);
    glTexCoord2f(1, 0); glVertex3f(-4.0, 0.5,  8.0);
    glTexCoord2f(1, 1); glVertex3f(-4.0, 0.5,  6.0);
    glTexCoord2f(0, 1); glVertex3f(-6.0, 0.5,  6.0);
glEnd();
Run Code Online (Sandbox Code Playgroud)

当我运行此代码时,两个四边形都绑定了白色纹理.如何让每个四边形都有自己的纹理?

Nic*_*las 10

你不能glBindTexture在中间打电话glBegin/End.您只能在开始/结束时调用顶点函数.

另外,为什么不将单个纹理制作为8x8棋盘,然后只渲染一个四边形来绘制整个棋盘?