您的位置:首页 > 其它

Third Demo of OGRE

2010-07-04 23:58 302 查看
#include "ExampleApplication.h"
class FameApplication : public ExampleApplication
{
public:
FameApplication();
~FameApplication();
//Just override the mandatory create scene method
void createScene(void);
void destroyScene(void);
};
FameApplication::FameApplication()
{
}
FameApplication::~FameApplication()
{
}
void FameApplication::createScene()
{
// Set ambient light
mSceneMgr->setAmbientLight(ColourValue(0.5, 0.5, 0.5));
//set Shadows
mSceneMgr->setShadowTechnique(SHADOWTYPE_STENCIL_ADDITIVE);
// setup a ogre mesh
Entity* ogreHead = mSceneMgr->createEntity("Ninja", "ninja.mesh");
ogreHead->setCastShadows(true);
SceneNode* headNode = mSceneMgr->getRootSceneNode()->createChildSceneNode();
headNode->attachObject(ogreHead);

Plane plane(Vector3::UNIT_Y, 0);
MeshManager::getSingleton().createPlane("ground",ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME, plane,
1500,1500,20,20,true,1,5,5,Vector3::UNIT_Z);
ogreHead = mSceneMgr->createEntity("GroundEntity", "ground");
mSceneMgr->getRootSceneNode()->createChildSceneNode()->attachObject(ogreHead);
ogreHead->setMaterialName("Examples/Rockwall");
ogreHead->setCastShadows(false);
// Create a skydome
mSceneMgr->setSkyDome(true, "Examples/CloudySky", 5, 8);
// Create a light
Light* l = mSceneMgr->createLight("MainLight");
//set light type is point
l->setType(Light::LT_POINT);
// Accept default settings: point light, white diffuse, just set position
// NB I could attach the light to a SceneNode if I wanted it to move automatically with
// other objects, but I don't
l->setPosition(20,80,50);
//set light of Diffuse
l->setDiffuseColour(1.0, 0.0, 0.0);
//set light of Specular
l->setSpecularColour(1.0, 0.0, 0.0);
l = mSceneMgr->createLight("MinorLight");
l->setType(Light::LT_DIRECTIONAL);
l->setDiffuseColour(ColourValue(.25, .25, 0));
l->setSpecularColour(ColourValue(.25, .25, 0));
l->setDirection(Vector3( 0, -1, 1 ));
}
void FameApplication::destroyScene()
{
}
INT WINAPI WinMain( HINSTANCE hInst, HINSTANCE, LPSTR strCmdLine, INT )
{
// Create application object
FameApplication app;
try
{
app.go();
}
catch( Ogre::Exception& e )
{
MessageBox( NULL, e.getFullDescription().c_str(), "An exception has occured!", MB_OK | MB_ICONERROR | MB_TASKMODAL);
}
return 0;
}


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: