Ogre简单的demo程序 入门必备

前些日子做ogre时自己写的一个ogre测试程序

#include <stdio.h>
#include <Ogre.h>

using namespace Ogre;

#pragma comment(lib,"OgreMain_d")

Root*           proot         = NULL;
Camera*         pcamera       = NULL;
SceneManager*   pscenemanager = NULL;
Light*          plight        = NULL;
RenderWindow*   pwindow       = NULL;
RenderSystem*   prendersystem = NULL;

static int width  = 800;
static int height = 600;

static int quit = 0;

DWORD WINAPI ThreadProc(  LPVOID lpParameter){
    do{
        char ch = getchar();
        if(ch == 'q'){
            quit = 1;
            break;
        }
    }while(true);
    return 0;
}


int main(int argc,char* argv[]){

    LARGE_INTEGER frequency ;
    LARGE_INTEGER curr_time;
    LARGE_INTEGER last_time;
    int frame_rate = 25;
    int per_freme  = 0;
    if(QueryPerformanceFrequency(&frequency)){
        per_freme = frequency.QuadPart / frame_rate;

        QueryPerformanceCounter(&curr_time);
        last_time = curr_time;
    }



    proot = new Root();

    Ogre::ResourceGroupManager::getSingleton().addResourceLocation("./", "FileSystem");
    //Ogre::ResourceGroupManager::getSingleton().addResourceLocation("D:/ogre_src_v1-7-3/Samples/Media/models", "FileSystem");
    //the resource path is very carefully
    //and this path "X:\\path" is error
    //and this path "X:/path" is right
    Ogre::ResourceGroupManager::getSingleton().addResourceLocation("E:/mecode/ogre_test2/ogre_test2", "FileSystem");



    //proot->loadPlugin("RenderSystem_Direct3D9_d");
    proot->loadPlugin("RenderSystem_GL_d");

    RenderSystemList render_list = proot->getAvailableRenderers();
    RenderSystemList::iterator it ;



    for(it = render_list.begin();it != render_list.end(); it++){
        if((*it)->getName() == "OpenGL Rendering Subsystem")
        {
            prendersystem = *it;
            proot->setRenderSystem(prendersystem);
            break;
        }
    }

    if(proot->getRenderSystem() == NULL){
        printf("set render system failed\n");
        return -1;
    }

    //proot->showConfigDialog();
    proot->initialise(false);
    pwindow = prendersystem->_createRenderWindow(
        "MainWindow",
        width,
        height,
        false,
        0);



    pscenemanager = proot->createSceneManager(ST_GENERIC, "zsqSceneManager") ;
    pcamera = pscenemanager->createCamera("zsqCamera");
    pcamera->setPosition(0, 0, 100);
    pcamera->lookAt(0, 0, -1);
    pcamera->setNearClipDistance(1);
    pcamera->setFarClipDistance(200);

    Viewport* vp = pwindow->addViewport(pcamera);
    vp->setBackgroundColour(Ogre::ColourValue(0,0,0));
    pcamera->setAspectRatio(Ogre::Real(vp->getActualWidth()) / Ogre::Real(vp->getActualHeight()));

    pscenemanager->setAmbientLight(Ogre::ColourValue(1, 1, 1));
    plight = pscenemanager->createLight();
    plight->setPosition(20, 20, 20);

    Ogre::TextureManager::getSingleton().setDefaultNumMipmaps(5);
    Ogre::ResourceGroupManager::getSingleton().initialiseAllResourceGroups();

    Entity* e = pscenemanager->createEntity("ogrehead.mesh");
    //e->setMaterialName("");
    SceneNode* node = pscenemanager->getRootSceneNode()->createChildSceneNode(
        "node1",Ogre::Vector3(0,0,0));
    node->attachObject(e);

    //proot->startRendering();

    
    int delt = 0;
    while(quit == 0){
        QueryPerformanceCounter(&curr_time);
        delt = curr_time.QuadPart - last_time.QuadPart;
        if(delt >= per_freme){
            node->yaw(Radian(0.05f));
            proot->renderOneFrame();
            last_time = curr_time;
        }
        
        
    }

    //HANDLE fresh_id = CreateThread(NULL, 0, ThreadProc, NULL, 0, NULL );

    

    if(proot){
        delete proot;
        proot = NULL;
    }
    return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值