• <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 閱讀(2808) 評論(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国产精品一区二区| 婷婷久久香蕉五月综合加勒比| 一本色道久久综合狠狠躁 | 狠狠狠色丁香婷婷综合久久五月 | 亚洲AV无码一区东京热久久| 色综合久久中文字幕无码| 久久精品国产久精国产果冻传媒| 久久强奷乱码老熟女网站| 97久久国产亚洲精品超碰热| 精品久久久久久无码人妻热| 国产精品99久久不卡| 99国产精品久久| 久久99国产精品成人欧美| 亚洲精品tv久久久久久久久久| 中文字幕日本人妻久久久免费| 波多野结衣中文字幕久久 | 久久久久一区二区三区| 久久亚洲2019中文字幕| 亚洲国产另类久久久精品| 国产—久久香蕉国产线看观看| 久久精品国产2020| 91精品国产91久久久久久青草 | 人妻丰满?V无码久久不卡| 色婷婷综合久久久中文字幕| 久久国产精品免费| 精品国产一区二区三区久久久狼| 欧美麻豆久久久久久中文| 99久久国产综合精品成人影院| 99久久精品免费看国产一区二区三区 | 久久精品国产色蜜蜜麻豆| 久久免费美女视频| 色偷偷久久一区二区三区| 亚洲а∨天堂久久精品| 久久精品一区二区| 人妻无码中文久久久久专区|