Qt中使用OpenGL碰到的问题汇总

配置环境 vs2015 + Qt5.9

问题 - GLFW的配置
从官方下载glfw-3.2.1源代码后,通过Cmake默认配置,生成glew.sln,编译生成glfw3.lib,将其和include文件包含到Qt的pro文件中后,编译示例程序时,发生好多link错误:“error LNK2019: 无法解析的外部符号 - **”。
解决办法
在cmake时,将BUILD_SHARED_LIBS选项勾上,重新编译生成glfw3.lib和glfw3dll.dll,将其添加到Qt的pro中,可编译通过。

问题 - GLAD的包含
在pro中配置好glad路径后,添加

#include <glad/glad.h>

位置不当的话,会出现报警:

error: C1189: #error:  OpenGL header already included, remove this include, glad already provides it

解决办法
包含glad时必须放在所有QOpenGL***头文件前面。

问题 - glDrawElements()崩溃
调用函数glDrawElements()出现错误:

Error - 
RtlWerpReportException failed with status code :-1073741823. Will try to launch the process directly

解决办法
1. gl***Pointer设置的缓冲错误,顶点索引越界引用顶点数组;
2. Buffer提早解绑,即在解绑VAO之前解绑了EBO,正确解绑顺序如下:

glBindVertexArray(0);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER,0);

3. VAO,VBO,EBO绑定时,和draw(or paintGL)函数调用VAO时不在同一个Context里面。此时需在绑定VAO之前调用makeCurrent()

(未完待续)

猜你喜欢

转载自blog.csdn.net/yizhou2010/article/details/80256207
今日推荐