Ogre 2011-12-01

材质

自己写材质脚本,并绘制到一个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);

	}

};

  

你可能感兴趣的:(r)