在我的游戏中,有一个渲染模块可以处理着色器、帧缓冲区和绘图。现在我想分别封装这三个任务的逻辑。这个想法是我将渲染模块分成三个模块。我这样做是为了降低代码复杂性并轻松实现实时着色器重新加载,但对我的问题并不重要。
绘图模块将创建空的着色器对象,glCreateProgram()
并将它们与源文件的路径一起全局存储。着色器模块将检查它们并通过加载源文件、编译和链接来创建实际的着色器。
但是在这个概念中,可能会出现渲染模块已经想要绘制但着色器模块没有创建实际着色器的情况。所以我的问题是,使用空着色器程序绘制是否有效?发生这种情况时屏幕会变黑对我来说是完全可以接受的。创建着色器应该很快就准备好了,所以延迟可能不明显。
使用空的着色器程序绘制是否有效?否则,我该如何实现其他地方加载的着色器的想法?