• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            隨筆 - 5, 文章 - 0, 評論 - 24, 引用 - 0
            數據加載中……

            linux使用Ogre+SDL進行游戲開發

            我選擇的是ubuntu8.04 + codeblocks8.02的開發環境。
            Ogre用的是1.4.5的版本。
            下面是用SDL進行的一個簡單的代碼.
            #include <Ogre.h>
            #include 
            <iostream>
            #include 
            <SDL/SDL.h>
            #include 
            <SDL/SDL_syswm.h>
            #include 
            <SDL/SDL_events.h>

            using namespace std;
            using namespace Ogre;
            class AppListener : public FrameListener
            {
            public:
                AppListener( RenderWindow 
            *_win ) : win( _win )
                {
                }
            public:
                
            bool frameStarted(const FrameEvent& evt)
                {
                    
            if ( !FrameListener::frameStarted( evt ) )
                        
            return false;

                        SDL_PollEvent( 
            &event );
                    
            return true;
                }
                
            bool frameEnded(const FrameEvent& evt)
                {
                    
            if ( !FrameListener::frameEnded( evt ) )
                        
            return false;

                    SDL_PollEvent( 
            &event );
                    
            if ( event.type == SDL_KEYDOWN )
                    {
                        
            if ( event.key.keysym.sym == SDLK_ESCAPE )
                            
            return false;
                    }
                    
            return true;
                }
            private:
                RenderWindow 
            *win;
                SDL_Event 
            event;
            };
            void parseWindowGeometry( Ogre::ConfigOptionMap& config, unsigned int& width, unsigned int& height, bool& fullscreen );
            int main()
            {
                Root 
            *root = new Root( "plugins.cfg" );
                RenderWindow 
            *win;

                
            if ( !root->showConfigDialog() )
                    
            return 0;
                
            if ( SDL_WasInit( SDL_INIT_VIDEO ) == 0 )
                {
                    unsigned 
            int height = 300, width = 400;
                    
            bool fullscreen;
                    parseWindowGeometry( root
            ->getRenderSystem()->getConfigOptions(), width, height, fullscreen );

                    root
            ->initialise( false );

                    SDL_Init( SDL_INIT_VIDEO );
                    SDL_SetVideoMode( width, height 
            / 200 );
                    SDL_WM_SetCaption( 
            "OgreTest""ogretest" );

                    SDL_SysWMinfo info;
                    SDL_VERSION(
            &info.version);

                    SDL_GetWMInfo(
            &info);

                    std::
            string dsp(&(DisplayString(info.info.x11.display)[1]));
                    std::vector
            <Ogre::String> tokens = Ogre::StringUtil::split(dsp, ".");

                    Ogre::NameValuePairList misc;
                    std::
            string s = Ogre::StringConverter::toString((long)info.info.x11.display);
                    s 
            += ":" + tokens[1+":";
                    s 
            += Ogre::StringConverter::toString((long)info.info.x11.window);
                    misc[
            "parentWindowHandle"= s;
                    win 
            = root->createRenderWindow("ogre", width, height, fullscreen, &misc);

                    
            ///we need to set the window to be active by ourselves, since GLX by default sets it to false, but then activates it upon recieving some X event (which it will never recieve since we'll use SDL).
                    
            ///see OgreGLXWindow.cpp
                    win->setActive(true);
                    win
            ->setAutoUpdated(true);
                }
                
            else
                {
                    win 
            = root->initialise( true );
                }

                root
            ->addFrameListener( new AppListener( win ) );
                root
            ->startRendering();
                
            return 0;
            }

            void parseWindowGeometry( Ogre::ConfigOptionMap& config, unsigned int& width, unsigned int& height, bool& fullscreen )
            {
                Ogre::ConfigOptionMap::iterator opt 
            = config.find( "Video Mode" );
                
            if ( opt != config.end() )
                {
                    Ogre::String val 
            = opt->second.currentValue;
                    Ogre::String::size_type pos 
            = val.find( 'x' );
                    
            if ( pos != Ogre::String::npos )
                    {
                        width 
            = Ogre::StringConverter::parseUnsignedInt( val.substr( 0, pos ) );
                        height 
            = Ogre::StringConverter::parseUnsignedInt( val.substr( pos + 1 ) );
                    }

                    opt 
            = config.find( "Full Screen" );
                    
            if ( opt != config.end() )
                    {
                        fullscreen 
            = ( opt->second.currentValue == "Yes" );
                    }
                }
            }
            原理很簡單。
            圖:


            posted on 2008-10-19 17:11 brilyf 閱讀(2813) 評論(8)  編輯 收藏 引用

            評論

            # re: linux使用Ogre+SDL進行游戲開發  回復  更多評論   

            因為最近windows要黑屏的說法,所以才決定去linux下開發。
            2008-10-19 17:13 | brilyf

            # re: linux使用Ogre+SDL進行游戲開發  回復  更多評論   

            It's prominent for you to remember though, you need to <a href="http://www.essaysprofessors.com">buy term paper</a> or <a href="http://www.essaysprofessors.com">buy research papers</a> just because a school isn't the best at everything doesn't mean it can't be the finest at a lot things. Essays blogs can bring more usefull for your creation you can also buy essay. But first of all, my indebtedness to this article, it has a expert instigation.
            2010-06-15 01:32 | Cynthia34HARRISON

            # re: linux使用Ogre+SDL進行游戲開發  回復  更多評論   

            Yeah doubtless very
            important for the primer it was pleasant to read about this good topic! If you need to get a great job firstofall you need resume writing. Study and don't forget - if you have to work and study at the same time, there arehotshots who are ready to aid you with your resume when you under time burden and looking for a great job.
            2010-09-05 06:42 | resume service

            # re: linux使用Ogre+SDL進行游戲開發  回復  更多評論   

            I had a dream to make my own company, but I didn't have enough amount of money to do this. Thank heaven my close friend told to utilize the home loans (goodfinance-blog.com). Therefore I used the auto loan and made real my dream.
            2012-06-09 10:44 | credit loans

            # re: linux使用Ogre+SDL進行游戲開發  回復  更多評論   

            When I want to make my weekly schedule not so tight, I phone agenicies that deal with paper writing and cooperate with expertpaper writer.
            2012-08-17 22:52 | academic essays buy
            久久久国产打桩机| 国内精品免费久久影院| 亚洲国产成人久久精品99| 色综合久久久久| 久久99久久无码毛片一区二区| 久久婷婷五月综合色高清| yy6080久久| 久久精品国产亚洲av麻豆蜜芽| 青青草原综合久久大伊人| 精品国产乱码久久久久久人妻 | 久久精品中文字幕大胸| 亚洲国产日韩欧美综合久久| 亚洲欧美成人久久综合中文网| 久久经典免费视频| 亚洲va中文字幕无码久久| 久久精品人人槡人妻人人玩AV | 久久黄色视频| 亚洲精品成人久久久| 久久精品无码一区二区WWW| 久久久久人妻精品一区二区三区| 91精品国产高清久久久久久io| 久久久久综合网久久| 久久久99精品一区二区 | 国产免费久久精品99re丫y| 伊人久久大香线蕉av不卡| 久久精品国产99国产电影网| 美女久久久久久| 久久国产免费观看精品3| 久久国产V一级毛多内射| 亚洲精品乱码久久久久久中文字幕| 精品熟女少妇a∨免费久久| 久久福利片| 国产精品9999久久久久| 久久这里只有精品视频99| 久久ww精品w免费人成| 久久这里有精品视频| 久久精品九九亚洲精品天堂 | 99久久精品无码一区二区毛片| 狠狠色丁香久久婷婷综合_中 | 久久精品人成免费| 伊人久久大香线蕉成人|