用于在许多Qopenglwidget中显示的FBO渲染的全局OpenGL上下文
Global OpenGL context for rendering in fbo to display in many QOpenGLWidget
我想在同一窗口中的许多Qopenglwidget中显示一个具有不同视角的场景(与QSplitter架构分开)。重要的是,我只想在GPU上存储一次场景数据(几何和纹理)。但是,每个Qopenglwidget都有自己的Qopenglcontext。
我的想法是创建一个独立上下文,将场景渲染到framebufferobject(而不是qframeBufferObject),并在关注的qopenglwidget中使用结果纹理。
从技术上讲,我的方法是创建一个新的Qopenglcontext和qoffscreensurface。但是,当我想使用Qopenglcontext给出的结果Qopenglfunctions时,即使我检查了我的创建Qopenglcontext是有效的,它也会停止分段故障。
以更一般的方式,我很难理解Qopenglcontext,Surface(我的QoffScreensurface)和MakeCurrent函数的作用。
我的请求是了解做这件事的好方法是什么,以及为什么我会遇到分割错误。
我回来了我的问题。
实际上,我已经将我的第一个初始化的Qopenglwidget的上下文作为全局上下文来避免创建新的上下文。
棘手的部分是每次需要的全局上下文当前(在GPU上添加数据或使用FBO)。
油漆步骤很简单: - 使全球上下文当前。 - 启动FBO记录。 - 渲染场景。 - 停止FBO记录。 - 使Qopenglwidget上下文当前。 - 在屏幕上渲染FBO结果。
我已经使用gdebugger检查了我的内存,我所有的内存都在全局上下文中(仅存储一次)。
相关文章:
- 为什么在全局范围内使用"extern int a"似乎不行?
- 在全局变量中保存类的实例以重新创建类(创建"backup")
- OpenGL - 在抛出"__gnu_cxx::recursive_init_error"实例后终止调用?
- 当vector是tje全局变量时,c++中vector的内存管理
- std::threads可以从Windows DLL中的全局变量创建/销毁吗?
- 了解 GLM- openGL 中的相机转换
- 如何创建一个空的全局类并在启动时实例化它
- 如何在全屏模式下(在OpenGL中)使背景透明
- 内联函数中具有内部链接的全局变量
- 为什么我不能使用 EGL 创建无头 OpenGl 上下文?
- OpenGL大的3D纹理(>2GB)非常慢
- OpenGl glm rotate
- C++atioglxx.pdb未加载错误glBufferData OpenGL
- OpenGL在启用深度测试时不会丢弃我的碎片
- OpenGL相机和相机空间转型的困惑
- 如何在 openGL 中围绕全局轴旋转模型?
- 如何使用材质的环境色代替灯光的全局环境色?(OpenGL 1)
- 用于在许多Qopenglwidget中显示的FBO渲染的全局OpenGL上下文
- 全局变量的顺序会改变C /OpenGL的性能
- OpenGL旋转-局部轴与全局轴