c++ - 我对 glBindTexture 的使用有什么问题?

标签 c++ opengl

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

这是我的方法:

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();

当我运行这段代码时,两个四边形都绑定(bind)了白色纹理。如何让每个四边形都有自己的纹理?

最佳答案

您不能在glBegin/End 中间调用glBindTexture。您只能在 begin/end 内调用顶点函数。

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

关于c++ - 我对 glBindTexture 的使用有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8045241/

相关文章:

python - 从位图字体图像中提取字形数据的工具

c++ - 颜色类型 3 的 PNG 图像纹理格式

c++ - CMake 和 SOIL 链接

c++ - DirectX 9 高级教程 C++

python - 预期的 LP_c_float 实例而不是 glVertex3fv 中的元组

c++ - 在非成员函数中访问MFC对话框的成员变量

c++ - 在模板化结构范围内使用声明模板化

java - glVertex 参数以什么单位进行测量?

c++ - 逐元素矩阵乘法 : R versus Rcpp (How to speed this code up? )

c++ - 如何将指针拖到类对象的指针内并递归分配它们然后返回指针? C++