通过以上的学习,你应该可以熟练的使用PagedGeometry的基本功能来增加树木和草丛到你的游戏场景里面。现在我们需要增加一些草。这个教程解释了使用PagedGeometry的草加载组件增加动态的草到你的场景中,以及怎样把阴影应用到你的草和树上从而在很大程度上改善了图形学的视觉效果。 (一)草组件加载GrassLoader GrassLoader 是一个关键的渲染几何核心引擎组件像TreeLoader2D和TreeLoader3D。使用TreeLoader 类中的一个组件增加草是非常单调和无效的,由于草的叶子需要单个的增加。由于这个原因,GrassLoader的存在就可以很容易的对草进行渲染了。 1、你不可能使用ImpostorPage展示草。由于草是许多billboards,在构造上,它已经是尽可能的优化了。试图对草使用impostors将导致许多impostor渲染,导致大量的内存浪费,当加载新的页时就会出现许多lag。你应该使用BatchPage或者“GrassPage”展示草,后者将是最优化的。 2、Fade 转变一直用在草上面, and do not cost any performance. When configuring the (二)创造草
增加草到你的世界中,你首先要创建一耳光PagedGeometry对象,正如: PagedGeometry* grass = new PagedGeometry(camera,50); 我们通过使用GrassPage取代BatchPage和Impostorpage组合: grass->addDetailLevel<GrassPage>(100); GrassPage 是最有效的展示草的LOD,换句话说它不是最有效的展示树木。 下面,建立一个新的GrassLoader实例通过PagedGeometry对象使用: GrassLoader *grassLoader = new GrassLoader(grass); grassLoader->setHeightFunction(&getTerrainHeight);
另外为了创建和分配一个GrassLoader实例给PagedGeometry对象,你能够看到这个函数称为“setHeightFunction()”像TreeLoader2D,在运行期间GrassLoader计算草的Y的位置的时候都要用到这个函数。通常建立一个函数返回你的地形中的高度值,这样可以使草和树木直接出现在地形的表面上。 PagedGeometry是完全可以展示草!所有你需要做的就是增加下面的代码: GrassLayer *layer = grassLoader->addLayer("GrassMaterial"); |
转载于:https://www.cnblogs.com/lancidie/archive/2011/06/18/2084427.html