OpenGL:VBO删除的奇怪行为?

马克思佩恩

我在“顶点缓冲对象”(VBO)中遇到了一个奇怪的问题。我创建了一个包含VBO创建和删除的类。我删除了类的析构函数中的所有VBO(带有glDeleteBuffers())。

现在,我创建了2个OpenGL上下文窗口,每个窗口都与VBO类一起运行。现在,当我关闭一个GLwindow时,它的析构函数调用也被删除,但VBO也被删除了,但奇怪的是第二个窗口上的析构函数效果,在第二个窗口上运行的对象消失了。使用不推荐使用的glVertex3fv进行渲染时,可以看到该对象,但不能看到VBO。如果我不使用GLwindow类的析构函数删除VBO,则一切正常。我不应该在每次上下文删除时都删除VBO吗?

我的问题是为什么会这样?我知道OpenGL是状态机,但我们不能制作一个全新的独立类对象吗?

我注意到(glDeleteTextures())具有相同的效果,如果不使用析构函数删除纹理,则不会发生任何奇怪的事情,但是如果删除一个Glwindows纹理,它将对渲染的第二个Glwindow产生影响,并且纹理消失。

它是已知问题还是仅在我身上发生?

数据狼

Reto Koradi已经提到过复制语义。要记住的另一件事是OpenGL允许上下文共享,即,某些对象在OpenGL上下文之间共享,并且在一个上下文中删除会从所有上下文中删除它。超越共享上下文的对象是

  • 纹理
  • 使用glBindBuffer绑定的缓冲区对象
  • 渲染缓冲区

超越共享上下文的对象中有

  • 帧缓冲对象
  • 顶点数组对象

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Opengl GLM lookAt奇怪的行为

来自分类Dev

从数组删除,镜像(奇怪)行为

来自分类Dev

从数组删除,镜像(奇怪)行为

来自分类Dev

OpenGL中的图像坐标行为很奇怪

来自分类Dev

OpenGL ES 2.0中的奇怪精度行为

来自分类Dev

奇怪的泛型行为。被提早删除?

来自分类Dev

从ListView中删除项目的奇怪行为

来自分类Dev

htaccess删除空白时的奇怪行为

来自分类Dev

实体框架Datagridview删除奇怪的行为

来自分类Dev

使用OpenGL和GLSL的SSAO算法的奇怪性能行为

来自分类Dev

OpenGL简单的VBO麻烦

来自分类Dev

VBO在openGL中

来自分类Dev

OpenGL vbo结构

来自分类Dev

OpenGL vbo结构

来自分类Dev

OpenGL 更新静态 VBO

来自分类Dev

OpenGL 使纹理透明 VBO

来自分类Dev

奇怪的行为

来自分类Dev

奇怪的行为

来自分类Dev

奇怪的行为

来自分类Dev

spray.io奇怪的获取/删除/分离指令行为

来自分类Dev

从窗口对象中删除属性时的奇怪行为

来自分类Dev

'sudo chmod -rwx'的奇怪行为:不删除组写权限

来自分类Dev

休眠奇怪的行为。多对多。级联全部删除

来自分类Dev

删除了Python并重新安装;奇怪的行为

来自分类Dev

预测行为的奇怪行为

来自分类Dev

OpenGL纹理触发错误1281和奇怪的背景行为

来自分类Dev

在现代OpenGL中,使用GL_TRIANGLE奇怪的z轴行为绘制实心圆

来自分类Dev

四元数旋转具有奇怪的行为(Haskell OpenGL)

来自分类Dev

OPENGL ES 2.0。安卓。深度缓冲区的奇怪行为