材质
自己写材质脚本,并绘制到一个quad上去
新的材质脚本的path:F:\OgreSDK_vc9_v1-7-2\media\materials\scripts\Ogre3DBeginerGuide.material
内容:
material mymaterial1 { technique { pass { texture_unit { texture leaf.png } } } }
class MyApplication :public ExampleApplication { public: MyApplication() {} ~MyApplication() {} void createScene() { // 用manual object 绘制自己定义的物体 Ogre::ManualObject* manual = mSceneMgr->createManualObject("Quad"); // param1--渲染manual object用到的材质(纹理)图 // param2--顶点的格式 manual->begin("mymaterial1", RenderOperation::OT_TRIANGLE_LIST); manual->position(5.0, 0.0, 0.0); // indice = 0 manual->textureCoord(1, 1); manual->position(-5.0, 10.0, 0.0); // indice = 1 manual->textureCoord(0, 0); manual->position(-5.0, 0.0, 0.0); // indice = 2 manual->textureCoord(0, 1); manual->position(5.0, 10.0, 0.0); // indice = 3 manual->textureCoord(1, 0); //using indices 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* node1 = mSceneMgr->getRootSceneNode()->createChildSceneNode("node1"); node1->attachObject(ent); } };
纹理坐标设置超过1,默认使用wrap模式:
manual->position(5.0, 0.0, 0.0); // indice = 0 manual->textureCoord(2, 2); manual->position(-5.0, 10.0, 0.0); // indice = 1 manual->textureCoord(0, 0); manual->position(-5.0, 0.0, 0.0); // indice = 2 manual->textureCoord(0, 2); manual->position(5.0, 10.0, 0.0); // indice = 3 manual->textureCoord(2, 0);
还有clamp,mirror,border模式
渲染2个旋转纹理
class MyApplication :public ExampleApplication { public: MyApplication() {} ~MyApplication() {} void createScene() { // 用manual object 绘制自己定义的物体 Ogre::ManualObject* manual = mSceneMgr->createManualObject("Quad"); // param1--渲染manual object用到的材质(纹理)图 // param2--顶点的格式 manual->begin("mymaterial11", RenderOperation::OT_TRIANGLE_LIST); manual->position(5.0, 0.0, 0.0); // indice = 0 manual->textureCoord(1, 1); manual->position(-5.0, 10.0, 0.0); // indice = 1 manual->textureCoord(0, 0); manual->position(-5.0, 0.0, 0.0); // indice = 2 manual->textureCoord(0, 1); manual->position(5.0, 10.0, 0.0); // indice = 3 manual->textureCoord(1, 0); //using indices 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* node1 = mSceneMgr->getRootSceneNode()->createChildSceneNode("node1"); node1->attachObject(ent); Ogre::Entity* ent2 = mSceneMgr->createEntity("Quad"); Ogre::SceneNode* node2 = mSceneMgr->getRootSceneNode()->createChildSceneNode("node2", Ogre::Vector3(15, 0, 0)); ent2->setMaterialName("mymaterial12"); node2->attachObject(ent2); } };