我们有一个基于QWidget的应用程序,它以前使用QWindow进行OpenGL渲染。为了在我们的应用程序中适应该窗口,我们必须使用QWidgetQWidget::createWindowContainer(QWindow);以前我们只使用外部QtOpenGL库进行渲染。我们希望从使用QWindow切换到某种QWidget以与触摸手势兼容,并且通常与我们的应用程序的其余部分具有更好的整体兼容性。最新推荐的OpenGL兼容QWidget似乎是QOpenGLWidget,所以我们正在尝试使用它。glContext是我们自己管理的OpenGLContext。现在的问题是QOpenGLWidg
我正在尝试在qt5.1.1中使用着色器使用opengl渲染编写map应用程序。我能够使用Glew显示顶点。但我想使用qopenglfunctions.h中提供的功能奇怪的是,即使我包含这个文件,我也得到glGenBufferswasnotdeclaredinthisscope。当我打开qopenglfunctions.h时,它就在那个文件中!有人遇到过这个奇怪的问题吗?代码有点长。但是我添加了一些会引发链接器错误的内容。initializeGLFunctions();this->program=program;glGenVertexArrays(1,&mapVAO);//Thisisw
我正在配置一个与glut一起工作的程序来与Qt一起工作。我正在使用Qt5.1.1。并且似乎从Qt4到Qt5已经丢失了一些openGL功能。在我的程序中,我创建了一个QOpenGLContext并尝试使用vbo渲染到QWindow。vbo部分工作正常。程序的其他一些部分依赖于glew。我在运行程序时收到以下警告#warningqopenglfunctions.hisnotcompatiblewithGLEW,GLEWdefineswillbeundefined[-Wcpp]#warningTouseGLEWwithQt,donotincludeorafterglew.h[-Wcpp]屏幕
我正在尝试从http://www.kdab.com/opengl-in-qt-5-1-part-5/编译Tesselation的示例(包括源代码)与兼容性配置文件,它根本无法加载此配置文件:我所做的次要(也是唯一)修改:@terraintessellationscene.h:QOpenGLFunctions_4_3_Compatibility*m_funcs;@terraintessellationscene.cpp:m_funcs=m_context->versionFunctions();if(!m_funcs){qFatal("RequiresOpenGL>=4.0");exit
QOpenGLFunctions似乎缺少重要的功能,例如glInvalidateFramebuffer和glMapBuffer。据我了解,QOpenGLFunctions加载了桌面OpenGL函数和ES函数的交集。如果是这样,为什么这两个功能不存在?据我所知,glMapBuffer在两者中都有。我是否误解了QOpenGLFunctions,或者它们实际上缺少函数(不太可能)? 最佳答案 QOpenGLFunctions仅公开OpenGL2(+FBO)和OpenGLES2的公共(public)子集。这就是为什么您的函数不存在的原因。g
我目前致力于使用Qt5gui模块来访问OpenGL功能。然后我发现QOpenGLFunctions很有用,因为:它包装了OpenGLforDesktop和OpenGLES,确保我以“可移植”的方式使用OpenGLAPI。我不必担心包含OpenGLheader,Qt会帮我做。但我对正确使用它的方法存疑。以下几行仅列出了我所知道的使用此类的三种方式。我的问题是:是否有使用QOpenGLFunctions的好方法?继承自QOpenGLFunctionsQt官方文档说“从QOpenGLFunctions继承你的类并像以前一样使用glXXXX类。但我不喜欢这种方式:如果我的类之前需要从其他类继承