将glew与Qt 5.4 QOpenGLWidget一起使用
Using glew with Qt 5.4 QOpenGLWidget
我正在尝试将GLEW与新的QOpenGLWidget(出现在Qt 5.4中)一起使用。虽然我可以很容易地与旧的QGLWidget一起使用,但新的QOpenGLWidget/QOpenGLContext类似乎与GLEW协作不好(我别无选择,我正在使用一个使用GLEW的外部库)。我有以下问题:
- 有一个编译时警告(在qopenglfunctions.h中触发当定义GLEW_H时),并且我无法避免包括qopenglfunctions.h,因为它包含在QOpenGLContext中
- (不确定是否相关)在我的应用程序中,我得到了OpenGL堆栈下溢
- (不确定它是否相关)在我的应用程序中,当我尝试将OpenGL上下文设为当前上下文时,它会导致整个应用程序的黑色窗口应用程序(我在应用程序中有几个QOpenGLWidget需要更改上下文,因为我正在使用OpenGL颜色剪裁)
我想去掉警告来确定是否2。和3。与GLEW/QOpenGLWidget不兼容有关。
注意:关于Stackoverflow上的Qt5/GLEW,已经有几个问题了,但它们都与(旧的)QGLWidget有关,后者的行为非常不同(使用相同代码/应用程序的这个问题没有问题)。
代码库位于此处:https://gforge.inria.fr/frs/?group_id=1465(太大了,不能包括在这里,而且由于长度的原因,我不能让你看一看,以防你想知道)
我能够解决以下所有问题(是的!):
- 带有makeCurrent()的黑窗口:我正试图使用QOpenGLContext::makeCurrent(Surface*),它将Surface*作为论点,我没有正确的。现在我正在使用QOpenGLWidget::makeCurrent()(将右侧的Surface*传递给上下文)
- OpenGL堆栈矩阵下溢错误:这一个更棘手,因为在我的OpenGL渲染功能中,我第一次在QTextEdit小部件中显示一些文本,这导致了类似于OpenGL上下文开关重置堆栈矩阵的情况。通过对文本进行更新并在OpenGL渲染功能之外进行处理来修复它
- 由于Qt/glew.h:这个更容易,因为我不再使用QOpenGLContext(我正在使用QOpenGLWidget进行上下文切换),我不再需要包括QtOpenGL标头,也不再有任何冲突
相关文章:
- 如何将enable-if与模板参数和参数包一起使用
- 如何将PERF_AMPLE_READ与mmap一起使用
- 如何将两个不同矢量的同一位置的两个元素组合在一起
- 如何将C++中的库和头与MinGW一起使用
- 将--whole archive链接器选项与CMake和具有其他库依赖项的库一起使用
- 为什么我不能将 rand() 与数组的大小一起使用?
- 要与"if constexpr"一起使用的编译时消息(在预处理器之后)
- 不能将复制初始化与隐式转换的多个步骤一起使用
- 将fold表达式与std::一起用于两个元组
- spdlog标头仅与外部fmt一起使用.spdlog错误:'内部':不是'fmt'
- 将 std::allocate_shared 与多态资源分配器一起使用
- 为什么常量词在重载运算符中不与 ostream 对象一起使用<<?
- 将 OpenCV 与 CMAKE 中的项目一起构建为第三方库的正确方法
- 将QOpenGLWidget子类转换为使用Metal而不是OpenGL的子类是否可行?
- 将 exprtk 与自定义类的对象一起使用
- 将 std::set 与基于键的比较器一起使用
- 将 C++ 类与 Rcpp 一起使用,从 C 或 R 修改它
- 如何将 Eigen::Ref 与 pybind11 一起使用?
- 如何将AERT_Allocate与 std:vector 一起使用
- 将glew与Qt 5.4 QOpenGLWidget一起使用