0
我正在使用Qt Creator(C++),并且正在创建一个GLWidget。我需要使用一些纹理。在Qt中最简单的方法是使用QGLWidget函数bindTexture(QImage)。当我尝试使用这种方法绑定纹理时,我的QGLWidget行为异常 - 它什么也没有显示(尽管我多次调用updateGL()),但它的颜色清晰。当我添加一个具有以前绑定纹理的项目时,它开始正常工作。这是我如何initialiazing纹理:Qt 5 OpenGL绑定纹理导致werid bug
void GLWidget::initializeGL()
{
qglClearColor(Qt::white);
glEnable(GL_BLEND);
glEnable(GL_TEXTURE_2D);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
generateGrid(0.025);
//**deleting lines below solves this problem... but then I can't use textures!**
mvTextureID.push_back(bindTexture(QImage("and.png")));
mvRedTextureID.push_back(bindTexture(QImage("and_red.png")));
mvTextureID.push_back(bindTexture(QImage("nand.png")));
mvRedTextureID.push_back(bindTexture(QImage("nand_red.png")));
}
我滥用方法bindTexture?为什么在GLWidget开始执行之前,我必须实际使用绑定纹理之一?