• <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進行游戲開發(fā)

            我選擇的是ubuntu8.04 + codeblocks8.02的開發(fā)環(huán)境。
            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 閱讀(2841) 評論(8)  編輯 收藏 引用

            評論

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

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

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

            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進行游戲開發(fā)  回復  更多評論   

            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進行游戲開發(fā)  回復  更多評論   

            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進行游戲開發(fā)  回復  更多評論   

            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
            久久精品成人免费网站| 久久久久香蕉视频| 亚洲第一永久AV网站久久精品男人的天堂AV| 国产精品久久久久a影院| 久久丝袜精品中文字幕| 国产亚州精品女人久久久久久 | 久久本道综合久久伊人| 久久99中文字幕久久| 69国产成人综合久久精品| 久久久国产乱子伦精品作者| 色综合久久无码中文字幕| av午夜福利一片免费看久久| 97久久久久人妻精品专区| 2022年国产精品久久久久 | 99久久精品免费国产大片| 9191精品国产免费久久| 亚洲国产精品一区二区久久| 狠狠综合久久综合中文88| 一本久久免费视频| 色88久久久久高潮综合影院| 韩国无遮挡三级久久| 91精品日韩人妻无码久久不卡 | 久久福利青草精品资源站免费 | 国产免费久久精品99久久| 久久精品?ⅴ无码中文字幕| 青青热久久国产久精品| 亚洲国产另类久久久精品小说 | 93精91精品国产综合久久香蕉| 久久99精品久久久久久噜噜| 伊人久久成人成综合网222| 欧美黑人激情性久久| 久久久久久无码国产精品中文字幕| 国产69精品久久久久观看软件 | 久久久精品人妻一区二区三区蜜桃| www.久久热.com| 伊人久久精品影院| 久久免费精品一区二区| 久久精品极品盛宴观看| 久久中文字幕一区二区| 国产亚洲精品久久久久秋霞| 久久www免费人成看国产片|