ogre3D学习基础18 -- 材质的使用与脚本的简单书写
2013-10-16 15:38
1076 查看
这一节以基础16为基础,练习材质的使用。
第一,看看框架
第二,在createScene()里添加手动创建的对象manual
第三,绘制图形,正方形,并结束绘制。
最后运行效果是一个方形白色方块。
好,现在我们添加材质
在路径..\media\materials\scripts下新建一个material格式的文件,添加代码如下:
将程序中manual->begin("MyMaterial",RenderOperation::OT_TRIANGLE_LIST);中的MyMaterial替换为MyMaterial1,效果如下:
现在将material改为matreial2,代码如下:
下面来改变一下
看一下效果
这样显示是系统默认的显示的方式,为 wrapping mode,内部解释为将大于2的部分复制显示,like this:
主要是纹理问题,我们换个图片就会发现,这样的好处,你能发现区别吗,这个纹理根部看不出来是四个图片拼接而成。
第二种纹理显示模式,称之为clamping mode,需要在脚本里添加一句话,如下:
效果很明显,四个方块,以第一个为基础,向外辐射:
第三种类似镜子的纹理显示模式,改变脚本为
效果为:
镜子模式的图形分析如下:
第四中纹理显示模式称之为border mode ,边框模式,这种模式看不出其他的明显区别,因为边框填充为黑色的
第一,看看框架
//material #include "ExampleApplication.h" class TutorialApplication : public ExampleApplication { protected: public: TutorialApplication() { } ~TutorialApplication() { } protected: void createScene(void) { } }; #include "windows.h" INT WINAPI WinMain( HINSTANCE hInst, HINSTANCE, LPSTR strCmdLine, INT ) { // Create application object TutorialApplication app; app.go(); return 0; }
第二,在createScene()里添加手动创建的对象manual
Ogre::ManualObject *manual = mSceneMgr->createManualObject("Quad");//创建手绘对象 manual->begin("MyMaterial",RenderOperation::OT_TRIANGLE_LIST);//这里使用的材质是material
第三,绘制图形,正方形,并结束绘制。
manual->position(5.0,0.0,0.0); manual->textureCoord(0,2); manual->position(-5.0,10.0,0.0); manual->textureCoord(2,0); manual->position(-5.0,0.0,0.0); manual->textureCoord(2,2); manual->position(5.0,10.0,0.0); manual->textureCoord(0,0); manual->index(0);//三角形一 manual->index(1); manual->index(2); manual->index(0);//三角形二 manual->index(3); manual->index(1); manual->end(); manual->convertToMesh("Quad"); Ogre::Entity *ent = mSceneMgr->createEntity("Quad"); Ogre::SceneNode *node = mSceneMgr->getRootSceneNode()->createChildSceneNode("Node1"); node->attachObject(ent);
最后运行效果是一个方形白色方块。
好,现在我们添加材质
在路径..\media\materials\scripts下新建一个material格式的文件,添加代码如下:
material MyMaterial1 { technique { pass { texture_unit { texture gras_02.png } } } }
将程序中manual->begin("MyMaterial",RenderOperation::OT_TRIANGLE_LIST);中的MyMaterial替换为MyMaterial1,效果如下:
现在将material改为matreial2,代码如下:
material MyMaterial2 { technique { pass { texture_unit { texture water02.jpg } } } }
下面来改变一下
manual->position(5.0, 0.0, 0.0); manual->textureCoord(0,2);//变为2 manual->position(-5.0, 10.0, 0.0); manual->textureCoord(2,0);//变为2 manual->position(-5.0, 0.0, 0.0); manual->textureCoord(2,2);// manual->position(5.0, 10.0, 0.0); manual->textureCoord(0,0);//
看一下效果
这样显示是系统默认的显示的方式,为 wrapping mode,内部解释为将大于2的部分复制显示,like this:
主要是纹理问题,我们换个图片就会发现,这样的好处,你能发现区别吗,这个纹理根部看不出来是四个图片拼接而成。
第二种纹理显示模式,称之为clamping mode,需要在脚本里添加一句话,如下:
material MyMaterial2 { technique { pass { texture_unit { texture water02.jpg tex_address_mode clamp//这句话设置显示mode } } } }
效果很明显,四个方块,以第一个为基础,向外辐射:
第三种类似镜子的纹理显示模式,改变脚本为
material MyMaterial1 { technique { pass { texture_unit { texture gras_02.png tex_address_mode mirror// } } } }
效果为:
镜子模式的图形分析如下:
第四中纹理显示模式称之为border mode ,边框模式,这种模式看不出其他的明显区别,因为边框填充为黑色的
相关文章推荐
- ogre3D学习基础3 -- 粒子与表层脚本
- ogre3D学习基础3 -- 粒子与表层脚本
- ogre3D学习基础3 -- 粒子与表层脚本
- ogre3D学习基础1 -- 核心对象与脚本技术
- ogre3D学习基础11 -- 日志文件的使用与异常处理
- ogre3D学习基础19 --- 材质的继承,纹理的滚动与旋转
- ogre3D学习基础1 -- 核心对象与脚本技术
- APIDemo学习笔记——Android上几种简单的Animation使用方法(三)——3D Transition
- 跟我从零基础学习Unity3D开发--U3d脚本注意事项及两个基本函数的简单介绍
- ogre3D学习基础15 -- 创建BSP Scene Manager
- ogre3D学习基础16 -- 手动创建实体(ManualObject)
- ogre3D学习基础9 -- 光源程序实例
- 3D开发学习-着色语言 Shading Language基础(二) 使用
- ogre3D学习基础4 -- 网格工具与硬件缓存
- android 基础再学习-linkify超链接的简单使用
- 【Dubbo基础】dubbo学习过程、使用经验分享及实现原理简单介绍
- ogre3D学习基础5 -- 阴影与动画
- ogre3D学习基础10 -- 键盘控制与鼠标控制(直接控制)
- AJAX学习基础:简单介绍数据岛使用方法
- Android学习历程18-SeekBar的简单使用