QT OpenGL、顶点缓冲区对象和 GLEW?
我正在将旧的 openGL 代码(立即模式)迁移到 Vertext-Buffer-Objects。 我意识到我需要为此使用 OpenGL3 API 调用(GL_ARB_vertex_buffer_object)。 所以我打算使用 GLEW 作为扩展加载库。
我的问题是,是否有一种特殊的方法来为 OpenGL3 contexT 初始化 QGLWidget?
I am in the process of migrating my old openGL code (immediate mode) to Vertext-Buffer-Objects.
I realized that I need to use OpenGL3 API calls (GL_ARB_vertex_buffer_object) for this.
So I was going to use GLEW as extension loading library.
My question is , is there a special way to initialize QGLWidget for OpenGL3 contexT?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
“OpenGL 3 上下文”是什么意思?
您可以通过正常的上下文创建来获得 OpenGL 3.1 或更高版本的支持。现在,如果您想要一个核心 OpenGL 上下文,它实现了核心规范,那么你必须做一些工作。
请注意,兼容性上下文完全没问题。它仍然做核心上下文所做的一切;您不必执行以下任何操作来使用缓冲区对象。
哦,缓冲区对象不再是扩展了。使用核心函数,而不是您在 GL_ARB_vertex_buffer_object 中看到的扩展函数。
注意:以下内容适用于 QT 4.7 或更高版本:
您必须至少熟悉
QGLFormat
;您需要一个来创建QGLWidget
。只需使用QGLFormat::CoreProfile
对该对象调用QGLFormat::setProfile
即可。遗憾的是,QT 不允许您指定特定版本。但是,假设您的硬件实现 OpenGL 3.2 或更高版本,这应该足以获得核心 OpenGL 配置文件。
What do you mean by an "OpenGL 3 context"?
You can get OpenGL support for version 3.1 or greater by normal context creation. Now, if you want a core OpenGL context, which implements the core specification, then you have to do a bit of work.
Note that a compatibility context is perfectly fine. It still does everything a core context does; you don't have to do any of the following to use buffer objects.
Oh, and buffer objects are not an extension anymore. Use the core functions, not the extension functions you see in
GL_ARB_vertex_buffer_object
.Note: the following is for QT 4.7 or above:
You must be at least semi familiar with
QGLFormat
; you need one in order to create aQGLWidget
. Just callQGLFormat::setProfile
on that object withQGLFormat::CoreProfile
.Sadly, QT does not allow you to specify a specific version. But that should be enough to get a core OpenGL profile, assuming your hardware implements OpenGL 3.2 or better.