gpt4 book ai didi

qt - 共享 OpenGL VAO/VBO/等。通过 QGLWidget

转载 作者:行者123 更新时间:2023-12-03 02:50:36 33 4
gpt4 key购买 nike

我正在使用 QGLWidgets 的 3 层层次结构在我的类似 CAD 的应用程序中的 5 个 OpenGL 视口(viewport)之间共享着色器和顶点数据。根上下文用于编译应用程序范围的着色器,每个文档上下文用于共享模型顶点数据,视口(viewport)上下文是实际进行渲染的上下文(还包含网格顶点数据和其他每个视口(viewport)的内容)。

着色器共享似乎工作得很好,网格绘制也是如此,但是当涉及到共享顶点数据时,它失败了,说实话 - 我不明白它应该如何工作......

我在模型上下文处于当前状态时为一个项目构建了一个 3D 图标,因为它是第一个 VAO,它的“名称”为 1。当我开始绘制对象时,视口(viewport)上下文(与模型上下文(记住)是当前的,因此调用了 VAO 1,但绘制的是视口(viewport)的 VAO 1 - 我漂亮的红色网格中心线。 OpenGL 上下文可以共享,但由于名称不唯一,如何指定每个项目所属的“命名空间”?

我尝试在模型 VAO 调用之前将模型上下文设置为当前,但是绘制了正确的 VAO 和视口(viewport),我认为在 QPainter::beginNativePainting() block 期间切换上下文并不会让 OpenGL 满意。

这对我来说似乎是一个非常基本的事情,所以我一定做了一些愚蠢的事情 - 有什么建议吗?

最佳答案

感谢 OpenGL 论坛上的 Alfonse Reinheart,我现在知道这是因为 VAO 不在上下文之间共享。

关于qt - 共享 OpenGL VAO/VBO/等。通过 QGLWidget,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5750454/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com