Qt里的OpenGL Context有啥作用?Qt助手已经看过了还是不明白,求解答

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Qt里的OpenGL Context有啥作用?Qt助手已经看过了还是不明白,求解答相关的知识,希望对你有一定的参考价值。

参考技术A QGLContext:封装了用于OpenGL渲染的场景
Qt提供加载图像并将其与纹理绑定的使用功能。可使用 GLuint bindTexture(Qimage&, GLenum target, GLint format, QGLContext::BindOptions)等接口将图像与所申请的OpenGL纹理索引进行绑定,并使用 deleteTexture ( GLuint id )来删除已申请的纹理索引。Qt在内部对己与纹理绑定的像素图/图像进行跟踪,这样就可在使用相同的图像文件或像素图时重新使用纹理。由于QImage是独立于硬件的,因此可以在另一个线程中对纹理图片进行绘制,在绘制完成之后再载入OpenGL中作为纹理,而不需要OpenGL渲染线程中处理,因此可以很大幅度提高OpenGL绘图部件的响应速度。

Qt OpenGL模块和Qt/3D有啥区别

【中文标题】Qt OpenGL模块和Qt/3D有啥区别【英文标题】:What is the difference between Qt OpenGL module and Qt/3DQt OpenGL模块和Qt/3D有什么区别 【发布时间】:2011-09-07 07:27:50 【问题描述】:

Qt Sdk(opengl下)中的3D例子已经可以演示了,但是没有Qt/3D,那么Qt OpenGL模块和Qt/3D有什么区别呢?

【问题讨论】:

我们只能使用 Qt/3D 吗?为什么? 您可以单独使用 Qt3D,但有时您可能必须将它与 Qt OpenGL 一起使用。大多数 Qt3D 类都依赖于 Qt OpenGL。我建议从查看源代码中提供的示例开始。 【参考方案1】:

来自Qt/3D Reference Documentation:

Qt/3D 是 Qt OpenGL 模块的一组扩展类,用于增强 OpenGL 在 Qt 4.7 及更高版本中的使用。

桌面 OpenGL 和嵌入式 OpenGL/ES 之间的移植传统上一直很困难。桌面 OpenGL、OpenGL/ES 1.1 和 OpenGL/ES 2.0 使用不同的函数名称,以及着色器与固定函数管道。编写在所有平台上运行的单个 OpenGL 应用程序是相当困难的,即使对于简单的对象也是如此。

所以 Qt/3D 是对普通 Qt OpenGL 模块的扩展。浏览该页面中的链接以获取更多详细信息和教程/示例。

【讨论】:

那么我们可以只使用 Qt/3D 吗?为什么? "我们可以使用 Qt/3D 吗?"我不知道。 “为什么?”我怎么知道? (我不是你,我猜不出你是否会或为什么会使用它。)如果你需要它就使用它。不使用就不要使用。 我的意思是:我们可以只使用Qt/3D模块来实现3D,而不使用QtOpenGL模块吗? “Qt/3D 是一组 Qt OpenGL 模块的扩展类”。它扩展 OpenGL 模块。这不是一个独立的东西。

以上是关于Qt里的OpenGL Context有啥作用?Qt助手已经看过了还是不明白,求解答的主要内容,如果未能解决你的问题,请参考以下文章

Qt OpenGL模块和Qt/3D有啥区别

QT5.3.1成功安装Failed to create OpenGL context错误解决方法

Qt Creator 版本之间有啥区别?

Qt中的Framebuffer

qt设计师左侧栏里的item view和item widgets有啥区别吗,如下图,求解

Qt 5.1 带有共享 QGLWidgets 的线程化 OpenGL