【发布时间】:2014-04-30 19:42:47
【问题描述】:
我正在使用 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)有一个类型“QGLShaderProgram”,它似乎包含了一些着色函数,但我不知道如何遵循一个简单的开放 GL 教程,完全访问渲染功能。
例如,openGL 教程引用了至少六个我似乎无法使用的函数。我对此很好,但我似乎无法找到 Qt 人员在哪里解释了哪些功能被包装、或掩盖或不存在。
我可能缺少包含或其他内容吗?
我包括#QGLWidget 和#QtOpenGL
【问题讨论】:
-
您不必使用包装类。 Qt 提供了一个可以继承的类(例如
QGLFunctions或QOpenGLGLFunctions),如果您的平台支持,它将为您提供在运行时加载的可调用函数。它有点像 GLEW,只是不那么广泛。 -
我怀疑一个问题是 glGenBuffers 来自 OpenGLES,并非所有版本的 Qt 都支持。
-
@Jay 不是来自 ES;它来自OpenGL 1.5+。如果 Qt 不支持那么旧的东西,我会感到非常惊讶。
-
@AndonM.Coleman 我发现了!在正确回答/关闭之前,我正在检查这些功能是否正常工作。
-
@ColonelThirtyTwo 它在 khronos 上的 opengles 树中列出:khronos.org/opengles/sdk/docs/man/xhtml/glGenBuffers.xml 也许它也被采用到 1.5 版中