【问题标题】:Sharing OpenGL VAO/VBO/etc. via QGLWidget共享 OpenGL VAO/VBO/等。通过 QGLWidget
【发布时间】:2011-04-21 22:28:32
【问题描述】:

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

着色器共享似乎工作正常,网格绘图也是如此,但在共享顶点数据时它失败了,老实说 - 我看不出它应该如何工作......

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

我尝试在模型 VAO 调用之前使模型上下文处于当前状态,但是正确的 VAO 和视口都被绘制,我认为在 QPainter::beginNativePainting() 块期间切换上下文不会让 OpenGL 满意。

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

【问题讨论】:

    标签: qt opengl qpainter qglwidget


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2020-08-18
      • 1970-01-01
      • 2018-11-05
      • 2012-07-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多