首先,根据[[ ]]来判断 FX, VS_*, FS_*部分
然后,将FX部分给 fxCode字符串, VS_*, FS_*分别交给 CodeResource 并依次存放在 _codeSections vector中。
之后,
会解析 FX部分, 这部分先会设置 uniform默认的值,float / float4 类型,变量存储在 _uniforms里 存放, Sampler的 路径名,存放在 _samplers里 该路径名,存放的就是 Fragment Shader的 Sampler变量 要使用的 图片
解析FX部分的 context 段,
context端 定义了 该context下 一些渲染的模式,以及 Vertex Shader 和 Fragment Shader的 名字
最后,
根据这些名字,CodeResource类会找到 相应的 Shader 代码段
然后 调用 ShaderResouce类的compileContexts方法,该方法会继续调用 Renderer类的 方法 对 Shader 进行 Compile,Link等。
CodeResource 类主要存储的就是 Vertex Shader 和 Fragment Shader的代码段,这些代码段 在文件里 都有一个名字[[ VS_* ]]/ [[ FS_* ]]的名字,
每一对VS, FS 在 [[ FX ]]里 对应一个 context, 每个代码段会有一个 id存储在context里。 根据这些context 的属性, CodeResource 对相应的代码段执行 操作。