3D引擎:Horde3D:读取Shader文件流程(二)

来源:互联网 发布:域名ns记录是什么 编辑:程序博客网 时间:2024/05/26 14:11
首先,根据[[ ]]来判断 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 对相应的代码段执行 操作。

0 0