QOpenGLFramebufferObject :: takeTexture无法复制纹理

时间:2017-02-20 18:27:20

标签: c++ qt opengl opengl-es

确定。我正在使用Qt和OpenGL。我的目标是将纹理复制到另一个对象中。我有一个自定义类对象的向量。每个对象都包含一个

class MyCustomClass {
  GLuint texture_id;

  //
  Other data members;
}

它维护MyCustomClass个对象的队列。因此,每次我创建MyCustomClass的对象时,我都会尝试将纹理复制到其中。我正在使用QOpenGLFramebufferObject::takeTexture来创建纹理和副本的副本。将其所有权归入MyCustomClass。像这样,

MyCustomClass ObjectMyCustomClass;
QOpenGLFramebufferObject currently_rendered_texture;
ObjectMyCustomClass.texture_id = currently_rendered_texture.takeTexture();

但似乎takeTexture并没有按照它在我的业余OpenGL实现中所声称的那样做。

我只想在ObjectMyCustomClass中创建纹理的副本,稍后我可以使用它来渲染我所拥有的特殊用例。 我正在做什么有什么问题?我注意到,当我稍后尝试访问纹理的副本时,我会获得使用takeTexture复制的最后一个纹理的ID。这里出了什么问题?

还是有一种在Qt OpenGL中复制纹理的首选方法吗?

以下博客明确指出我可以复制&通过调用takeTexture

获取纹理的所有权

https://blog.qt.io/blog/2015/09/21/using-modern-opengl-es-features-with-qopenglframebufferobject-in-qt-5-6/

0 个答案:

没有答案