Qt 5 OpenGL绑定纹理导致奇怪的错误
Qt 5 OpenGL binding textures causing werid bug
我正在使用Qt Creator(C++),我正在创建一个GLWidget。我需要使用一些纹理。在Qt中最简单的方法是使用QGLWidget函数bindTexture(QImage)。当我尝试使用此方法绑定纹理时,我的 QGLWidget 表现得很奇怪 - 它什么也没显示(即使我多次调用 updateGL() ),但它的颜色很清晰。当我添加具有先前绑定纹理之一的项目时,它开始正常工作。这就是我初始化纹理的方式:
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")));
}
我是否滥用了方法绑定纹理?为什么我必须在 GLWidget 开始按预期运行之前实际使用其中一个绑定纹理?
简单的错误 - 问题是我在开始时glEnable(GL_TEXTURE_2D);
使用了函数(当时我不需要),直到创建第一个纹理对象之前我才禁用它。这两个函数也是不必要的
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEARES
因为Qt的bindTexture();
是自己打电话给他们的。
相关文章:
- C++atioglxx.pdb未加载错误glBufferData OpenGL
- OpenGL 4.3 错误地将第 4 个纹理坐标映射到与第 3 个纹理坐标相同的位置
- 现代OpenGL和GLEW Libraray的编译错误
- GLFW DDS 加载函数的 OpenGL 链路错误
- MSVC __debugbreak() 与 openGL 错误回调一起使用时不会产生调用堆栈
- C++ OpenGL 中,绘制形状返回错误
- OpenGL C++(制作简单窗口时抛出错误)
- CMake on FindOpenGL.cmake 中的错误,当使用导入的目标 OpenGL::GLU?
- C++/OpenGL 随机分段错误
- 当我在网格/面中实现索引时,为什么它会返回OpenGl错误
- 在 CLion (MacOS) 中使用 OpenGL 和 GLUT 库时出现链接错误
- OpenGL, GLFW, GLAD. glViewport(0, 0, 800, 600) 抛出内存错误
- OpenGL "Segmentation fault"错误
- 在运行时处理 OpenGL 错误
- OpenGL 顶点缓冲区类重定义和模板方法错误
- 假设传递给 OpenGL 的结构数组的内存布局存在潜在错误
- 如何找到 NVIDIA OpenGL 驱动程序的错误 ID 名称?
- C++生成文件错误 (openGl)
- cocos2dx错误:opengl版本太旧
- SDL错误.OpenGL激活,使用SDL_GL_SwapBuffers()