• <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>

            劍孤寒的小站

            人生的價值不是用時間,而是用深度去衡量的!
            posts - 75, comments - 290, trackbacks - 0, articles - 0
                上一節介紹了如何用Galaxy2D游戲引擎構建最基礎的應用程序,這一節我們來學習如何用Galaxy2D提供的Framework來快速構建一個應用程序。
                Framework頭文件處于"engine/inc/ggefw"目錄中,打開上一節我們建立的工程,在main.cpp文件中添加以下內容:
            #include "ggefw/ggefw.h"
            #include 
            "ggebase.h"
            using namespace gge;

            class CGameMain:public ggeApplication
            {
            public:
                
            void OnUpdate(float dt)
                
            {
                }


                
            void OnRender()
                
            {
                    
            //清屏
                    Graph_Clear();

                    
            //畫一個方塊
                    Graph_RenderQuad(300.0f220.0f340.0f260.0f);
                }

            }
            ;

            int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
            {
                CGameMain GameMain;
                GameMain.Start();

                
            return 0;
            }


            如果編譯成功,運行該程序會像上一節一樣在屏幕中間顯示一個白色的方塊。

            可以看到使用Framework構建一個應用程序非常簡單,只需要從ggeApplication繼承一個類,然后實現OnUpdate(float dt)OnRender()函數即可。OnUpdate(float dt)用于刷新游戲邏輯,由于畫個方塊不需要啥邏輯,所以這里提供一個空函數。OnRender()用于渲染當前狀態下的圖像,畫方塊的代碼就加在這里,需要注意的是底層已經幫你調了Graph_BeginScene()/Graph_EndScene(),所以這里只需要直接畫方塊就可以了。

            在上一個教程里我們設置了幀率等系統狀態,在Framework里提供了一個更簡單的方法來設置常用屬性,在”engine/cfg”目錄下有一個” galaxy2d.ini”文件,打開它可以看到現在提供了如下屬性設置:幀率、垂直同步(0/1)、是否開啟音效(0/1)、屏幕顏色(16/32)、是否全屏(0/1)、是否使用偽全屏(0/1)。修改fps = 30vsync = 1來限制幀率并開啟垂直同步,然后將這個文件復制到galaxy2d.dll同級目錄,程序啟動時就會自動讀取這個配置了。如果要設置其他系統狀態就要手動添加一些代碼了,比如設置窗口標題欄文字,在CGameMain類里添加下面這個函數,可以看到標題欄文字已經變化了,設置其他系統狀態的代碼也可以加在這里。

            void OnConfig()                    
            {
                System_SetState(GGE_TITLE, 
            "Galaxy2D Game Engine - 使用Framework");
            }

            好了,這一節就先到這里,在Framework里還附帶一些很有用的幫助類,比如導出C++類到Lua等,相關信息可以查看Galaxy2D引擎文檔。

            Feedback

            # re: Galaxy2D游戲引擎教程2 - 使用Framework  回復  更多評論   

            2010-01-13 21:05 by xxx
            我按你的方法配置好工程,并把你寫的游戲框架代碼拷貝到工程下,編譯后就報下面這個錯誤,是ggefw.lib文件有問題嗎?還是我哪里沒有設置好。

            ------ 已啟動生成: 項目: test22, 配置: Debug Win32 ------
            正在鏈接...
            LINK : warning LNK4098: 默認庫“LIBCMT”與其他庫的使用沖突;請使用 /NODEFAULTLIB:library
            ggefw.lib(ggefwbase.obj) : error LNK2019: 無法解析的外部符號 "public: void __thiscall std::_String_base::_Xran(void)const " (?_Xran@_String_base@std@@QBEXXZ),該符號在函數 "public: class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > & __thiscall std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >::erase(unsigned int,unsigned int)" (?erase@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEAAV12@II@Z) 中被引用
            ggefw.lib(ggefwbase.obj) : error LNK2019: 無法解析的外部符號 "public: void __thiscall std::_String_base::_Xlen(void)const " (?_Xlen@_String_base@std@@QBEXXZ),該符號在函數 "protected: bool __thiscall std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >::_Grow(unsigned int,bool)" (?_Grow@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IAE_NI_N@Z) 中被引用
            D:\My Documents\Visual Studio 2005\Projects\test11\Debug\test22.exe : fatal error LNK1120: 2 個無法解析的外部命令
            生成日志保存在“file://d:\My Documents\Visual Studio 2005\Projects\test11\test22\Debug\BuildLog.htm”
            test22 - 3 個錯誤,1 個警告
            ========== 生成: 0 已成功, 1 已失敗, 0 最新, 0 已跳過 ==========

            # re: Galaxy2D游戲引擎教程2 - 使用Framework  回復  更多評論   

            2010-01-14 18:16 by 劍孤寒
            不好意思,
            是ggefw.lib的問題,
            前不久新加的功能疏忽了字符串兼容問題,
            導致vs2003與vs2005默認庫沖突,
            盡量在這兩天內修復。
            久久精品一区二区国产| 久久九九精品99国产精品| 久久亚洲国产精品五月天婷| 欧美日韩成人精品久久久免费看 | 合区精品久久久中文字幕一区| 2022年国产精品久久久久 | 久久久国产精品福利免费| 日本精品久久久久久久久免费| 欧美精品一本久久男人的天堂| 久久亚洲国产精品成人AV秋霞| 99久久综合狠狠综合久久止| 偷窥少妇久久久久久久久| 秋霞久久国产精品电影院| 久久丫忘忧草产品| AV狠狠色丁香婷婷综合久久| 久久久久久久久波多野高潮| 久久er热视频在这里精品| 日韩精品久久无码中文字幕| 亚洲午夜无码AV毛片久久| 久久精品国产黑森林| 久久精品九九亚洲精品天堂| 久久久久久午夜成人影院 | 亚洲国产高清精品线久久| 天天综合久久久网| 一本色道久久99一综合| 少妇久久久久久被弄到高潮| 久久播电影网| 国产精品热久久毛片| 国产国产成人久久精品| 一级做a爱片久久毛片| 亚洲国产成人久久综合一| 久久久久久无码Av成人影院| 久久青青草原精品国产| 国产一级做a爰片久久毛片| 久久精品成人免费网站| 精品无码久久久久久国产| 嫩草影院久久99| 久久精品国产影库免费看| 国产精品久久久天天影视香蕉| 久久99国产精品二区不卡| 精品久久久久一区二区三区|