• <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 閱讀(2935) 評論(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
            久久亚洲AV成人无码电影| 久久久WWW免费人成精品| 欧美午夜精品久久久久免费视 | 久久综合国产乱子伦精品免费| 国产精品99久久久精品无码| 久久精品一区二区国产| 国产精品内射久久久久欢欢 | 欧美噜噜久久久XXX| 国产免费久久精品丫丫| 国产成人久久精品一区二区三区 | 日韩欧美亚洲国产精品字幕久久久| 精品国产乱码久久久久软件| 国产精品女同久久久久电影院| 久久精品亚洲欧美日韩久久| 久久亚洲欧美国产精品| 伊人热热久久原色播放www| 亚洲国产精久久久久久久| 色综合久久无码五十路人妻| 色婷婷综合久久久久中文字幕 | 成人免费网站久久久| 久久福利资源国产精品999| 99精品伊人久久久大香线蕉| 天天躁日日躁狠狠久久| 久久亚洲精品成人无码网站| 久久久久亚洲av毛片大| 久久99精品久久久久久噜噜 | 国产亚洲色婷婷久久99精品| 久久久久久国产精品美女| 日韩中文久久| 精品人妻伦九区久久AAA片69| 久久99热只有频精品8| 久久AV高潮AV无码AV| 2021国内精品久久久久久影院| 色播久久人人爽人人爽人人片aV | 亚洲AⅤ优女AV综合久久久| 日本精品久久久久中文字幕8 | 精品久久香蕉国产线看观看亚洲| 精品熟女少妇av免费久久| 国内精品九九久久久精品| 人妻无码αv中文字幕久久琪琪布| 无码国产69精品久久久久网站|