2013-02-28 79 views
4

我正试图进入'现代'OpenGL。我想我到目前为止已经理解了shader的概念,并且我知道如何编译它们,但我不确定什么时候可以做到。编译着色器是否合适?

是否可以在应用程序启动时编译所有shader s的函数,将它们存储在某种类型的管理器中,这将用于当前需要的服务shader

或者我应该只在需要时编译它们,下一次需要时才使用我已经创建的那个?

而且我认为每帧创建一个shader program并不是一个好主意。

我很感激任何有关它的提示如何以良好的方式进行组织。

+1

性能对您的应用程序有多重要? – 2013-02-28 09:41:39

+0

不是很多,但我也不希望遇到大的表现下降。 – 2013-02-28 09:43:43

回答

2

可以在应用程序启动时编译所有着色器,将它们存储在某种类型的管理器中,用于当前需要的着色器吗?

是的。这是可以被视为OpenGL“初始化”的那些一次性初始化事件之一。