在我的游戏中,我想为每种情况创建单独的 GLSL 着色器。例如,如果我有 3 个模型character
,shiny sword
并且blury ghost
我想设置renderShader
, animationShader
andlightingShader
到 the character
, then renderShader
, lightingShader
and specularShader
to shiny sword
, 最后我想设置renderShader
, lightingShader
andblurShader
到blury ghost
.
应该将顶点的renderShader
位置乘以投影、世界和其他矩阵,它的片段着色器应该简单地将纹理设置为模型。
animationShader
应该通过给定的骨骼变换来变换顶点。
lightingShader
应该做光照,specularLighting
应该做镜面光照。
blurShader
应该做模糊效果。
现在首先我如何在不同的着色器上进行多个顶点变换?因为animationShader
应该计算顶点的动画位置,然后renderShader
应该得到该位置并通过一些矩阵对其进行转换。
其次,如何更改不同着色器上片段的颜色?
基本思想是我希望能够为每个 sutuations/效果使用不同的着色器,但我不知道如何实现它。
我需要知道我应该如何在 opengl 中使用这些着色器,以及我应该如何使用 GLSL,以便所有着色器能够相互完成,并且着色器不会关心是否使用了另一个着色器。