从Qt创建者访问现代OpenGL函数

Accessing Modern OpenGL functions from Qt creator

本文关键字:OpenGL 函数 访问 Qt 创建者      更新时间:2023-10-16

我正在使用Open GL 3.0

我正在尝试将此示例更新为现代OpenGL:http://qt-project.org/doc/qt-4.8/opengl-hellogl-es.html

我也在看这个例子:http://qt-project.org/doc/qt-5/qtopengl-cube-example.html

我正在看OpenGL ES的例子,因为它们在我的机器上很容易编译和渲染,而OpenGL ES 2的例子使用了一些可编程流水线。

我想使用本教程中引用的管道函数:http://www.opengl-tutorial.org/beginners-tutorials/tutorial-2-the-first-triangle/

例如glGenBuffers((

然而,这似乎并没有出现在公开的Qt中。如果我试图编译一个使用glGenBuffers或glBindBuffer的程序。

为什么我可以使用某些Open GL函数而不能使用其他函数?

看看第二个例子(OpenGL ES2(,有一种类型的"QGLShaperProgram"似乎包含了一些着色函数,但我不知道如何遵循一个简单的开放式GL教程来完全访问渲染函数。

例如,openGL教程引用了至少六个我似乎无法使用的函数。我对此很满意,但我似乎找不到Qt人员在哪里解释了哪些功能被包装、被掩盖或不存在。

我可能错过了一个内含物什么的?

我包括#QGLWidget和#QtOpenGL

请参阅下面我对您问题的回答。然而,你可能正在寻找一个更简单的OpenGL示例,它使用Qt,就像你链接到的三角形一样。我还在这里做了一篇介绍性文章,在开始示例之前,你可以在这里学习Qt和OpenGL如何协同工作的基础知识。

首先,现在使用Qt 5.5。默认情况下,它配置有-opengl动态选项,这可能会解决您的问题。如果你在Qt 5.5之前的版本中没有设置-opengl桌面配置选项,那么除了Qt支持的所有平台都支持的opengl ES 2的子集之外,你将无法访问现代opengl功能。

其次,不要使用QGL*函数或类,因为它们现在已经过时了。它们被QOpenGL*函数和类所取代。

至于includes,您需要一个QOpenGLFunctions或QOpenGLFunctions_3_0来确定您得到的是哪一组函数。您还需要任何其他类,如QOpenGLBuffer QOpenGLVertexArrayObject。。。或者只包括QtGui,因为现在所有OpenGL函数和类都在这里。