共享OpenGL VAO/VBO等.通过QGLWidget



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

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

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

我试着在模型VAO调用之前使模型上下文当前,但适当的VAO也不是viewport被绘制,我认为在QPainter::beginNativePainting()块期间切换上下文不会使OpenGL高兴。

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

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

相关内容

  • 没有找到相关文章

最新更新