2011-11-15 69 views
0

大家好,我困在一个问题,并希望你的帮助。假设我有5个GLSL着色器,我已成功加载到我的opengl程序中。当我想退出游戏时,我必须删除着色器。因此,要删除着色器,我将不得不:退出时删除多个着色器?

    从程序
  1. 拆离着色器
  2. 删除着色器
  3. 删除着色器程序

通过与glDeleteShader,glDeleteProgram等每一个着色器一? 如果有任何简单方便的方法,请告诉我。 在此先感谢!

回答

4

你为什么要等到应用程序结束才删除着色器对象?在为他们链接程序后,你应该已经摆脱它们。只需将它们附加到程序中,将其链接,分离它们并删除(除非您重复使用着色器对象)。

一旦你没有携带着色器对象的行李,它很简单。只需删除程序。

或者不。随你便; OpenGL上下文将自行清理。但是,如果你想删除它们,然后删除它们。

如果你有50个存储程序的不同变量,并且不想输入glDeleteProgram 50次,那么很明显你的代码的大小结构很差。如果你有这么多的程序,那么你需要采购一个资源管理系统,在那里你可以管理资源(如加载的程序),并确保它们被销毁。通过“采购”,我的意思是“写”。

资源管理器基本上是盒子,您可以在其中放入命名对象并将它们取出。当资源管理器被销毁时,它管理的所有资源也会被销毁(注意:有一些方法可以使资源管理器可以有多种方式销毁事物)。

+0

谢谢,我会尝试。 :) – CppOgl