这一节以基础16为基础,练习材质的使用。

  第一,看看框架

 //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 ;
}

  第二,在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(,);
manual->position(-5.0,10.0,0.0);
manual->textureCoord(,);
manual->position(-5.0,0.0,0.0);
manual->textureCoord(,);
manual->position(5.0,10.0,0.0);
manual->textureCoord(,); manual->index();//三角形一
manual->index();
manual->index(); manual->index();//三角形二
manual->index();
manual->index(); 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(,);//变为2
manual->position(-5.0, 10.0, 0.0);
manual->textureCoord(,);//变为2
manual->position(-5.0, 0.0, 0.0);
manual->textureCoord(,);//
manual->position(5.0, 10.0, 0.0);
manual->textureCoord(,);//

  看一下效果

这样显示是系统默认的显示的方式,为 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 ,边框模式,这种模式看不出其他的明显区别,因为边框填充为黑色的

最新文章

  1. iOS AppStore 申请加急审核
  2. .NET跨平台实践:用C#开发Linux守护进程
  3. (转)JAVA之桥接模式
  4. linux 查看占用内存/CPU最多的进程
  5. ZOJ 2677 Oil Deal(最大生成树)
  6. 如何让MFC程序关闭按钮失效,也无法右击任务栏关闭窗口来关闭?
  7. gulp 前端自动化工具
  8. line-height行高使用技巧
  9. 从决策树学习谈到贝叶斯分类算法、EM、HMM
  10. 通过maven test 报org.apache.ibatis.binding.BindingException: Invalid bound statement
  11. Java学习笔记3(数组)
  12. 使用JS取得焦点(focus)元素
  13. 安卓开发学习笔记(七):仿写腾讯QQ登录注册界面
  14. go ethereum源码分析 PartIV Transaction相关
  15. Git+Gitlab+Ansible的roles实现一键部署Nginx静态网站(一)--技术流ken
  16. Java中的并发工具类(CountDownLatch、CyclicBarrier、Semaphore、Exchanger)
  17. 【Mac brew】代理安装brew insall
  18. 图像矫正-基于opencv实现
  19. What is Druid?
  20. linux 手动释放buff/cache

热门文章

  1. vue指令总结(二)
  2. hihoCoder #1044 : 状态压缩·一 (清垃圾)
  3. 为当前导航添加active样式
  4. LuceneTest
  5. Drupal常用的模块
  6. XGBoost算法原理小结
  7. BundleConfig的作用
  8. 基于GMap.NET地图下载器的开发和研究
  9. javase(9)_java io系统
  10. 博学谷-数据分析pandas