Demo_Ocean 源码解析.docVIP

  • 3
  • 0
  • 约 9页
  • 2016-08-23 发布于河南
  • 举报
Demo_Ocean 源码解析

因为最近在做水,所以这篇海洋的例子是必须要读懂的。 耐着性子看了一下,还是能看懂的。现在将代码解析放上来。 程序共有四个文件: MaterialControls.h : MaterialControls.cpp 包含一个Shader属性结构和材质结构。其中Shader属性结构对应于海洋中模型对应VS,PS的一些属性。 材质结构中包含了若干这个属性。使用一个容器来存放。 另外有两个函数讲述了如何从资源名称中得到scripts目录下的Ocean.controls文件,并从中将一大堆的的材质和Shader属性信息载入到对应的结构中。 OceanDemo.h OceanDemo.cpp 程序和界面框架。 //============================================================ OceanDemo.h /* ----------------------------------------------------------------------------- This source file is part of OGRE (Object-oriented Graphics Rendering Engine) For the latest info, see / Copyright (c) 2000-2006 Torus Knot Software Ltd Also see acknowledgements in Readme.html You may use this sample code for anything you like, it is not covered by the LGPL like the rest of the engine. 材质控制器,对材质的各种参数进行设置 ----------------------------------------------------------------------------- */ #ifndef __MaterialControls_H__ #define __MaterialControls_H__ #include CEGUI/CEGUIForwardRefs.h #include OgreString.h //Shader参数类型 enum ShaderValType { GPU_VERTEX, GPU_FRAGMENT, MAT_SPECULAR, MAT_DIFFUSE, MAT_AMBIENT, MAT_SHININESS, MAT_EMISSIVE }; //顶点 //碎片 //反射 //漫反射 //环境光 //镜面反射 //发射光 //--------------------------------------------------------------------------- //Shader控制器(一个Shader属性的结构) struct ShaderControl { Ogre::String Name; //Shader名称 Ogre::String ParamName; //属性名称 ShaderValType ValType; //Shader参数类型 float MinVal; //最小值 float MaxVal; //最大值 size_t ElementIndex; //属性索引 mutable size_t PhysicalIndex; //物理索引 float getRange(void) const { return MaxVal - MinVal; } //取得差值 float convertParamToScrollPosition(const float val) const { return val - MinVal; } //由属性取得对应滚动条的索引位置 float convertScrollPositionToParam(const float val) const { return val + MinVal; } //由索引取得对应的属性 }; //Shader属性结构容器 typedef std::vectorShaderControl ShaderControlsContainer; //对应的迭代器 typedef ShaderControlsContainer::iterator ShaderControlIterator; // used for materials that have user contr

文档评论(0)

1亿VIP精品文档

相关文档