【问题标题】:Memory Allocation in OpenGL [closed]OpenGL中的内存分配[关闭]
【发布时间】:2012-11-15 15:53:54
【问题描述】:

这更像是一个有直接答案的讨论问题。我正在 OpenGL 中开发一个相当简单的场景,并且遇到了我正在使用的类结构的问题。我有一个“原始”基类,从中构建派生类,例如 Cube、Tetrahedron、Sphere 等。基类包含有关对象的所有数据,例如它的顶点和法线。从这里开始,我有几个从 Model 类派生的类,例如 Fence,它包含几个排列成正确结构的立方体。我将所有顶点和法线存储在堆中,并且需要一种释放内存的方法。但是,当尝试在 Primitive 的构造函数中释放内存时,我遇到了一个错误。

我认为这是因为在使用 GLUT 时,模型是在 glutMainLoop() 之外定义的,因此在程序完成使用它们之前它们就超出了范围。有没有更有效的方法来管理 OpenGL 中顶点数组的内存?或者有解决这个问题的方法吗?

【问题讨论】:

  • glutMainLoop 永远不会返回。你到底想问什么?
  • 如果你要对某人的问题投反对票,请礼貌地告诉他们为什么
  • @doron 我只是投了赞成票,因为这不是一个真正的问题,而不是投反对票。无论如何,人们可以在不解释原因的情况下随意投反对票

标签: c++ opengl memory glut allocation


【解决方案1】:

不要为您的模型使用客户端缓冲区,而是使用服务器端缓冲区。这些是使用glGenBuffer glBindBuffer and glBufferData 绑定的。这些 API 将您的缓冲区上传到服务器内存中,上传后您可以立即释放数据。

较新版本的 OpenGL 具有顶点数组对象 (VAO),它们也可以为您提供帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-11
    • 1970-01-01
    • 2021-11-27
    • 2013-11-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多