• <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游戲引擎構(gòu)建一個最基礎(chǔ)的應(yīng)用程序。

             

            首先設(shè)置編譯環(huán)境:

            1. 新建一個Win32項目,打開Galaxy2D引擎目錄,復(fù)制engine到當(dāng)前項目目錄下。

            2. 在項目屬性選項卡中的附加包含目錄中加入引擎頭文件目錄"engine/inc"

            3. 附加依賴項中加入"engine/lib/galaxy2d.lib"

            4. 復(fù)制動態(tài)鏈接庫"engine/lib/galaxy2d.dll"至工作目錄。

             

            接下來在當(dāng)前工程新建一個main.cpp文件,把下面內(nèi)容添加進去:

            #include "ggebase.h"
            using namespace gge;

            //幀函數(shù)
            bool Frame()
            {
                
            //開始渲染
                if (Graph_BeginScene())
                
            {
                    
            //清屏
                    Graph_Clear();

                    
            //畫一個矩形
                    Graph_RenderQuad(300.0f220.0f340.0f260.0f);

                    
            //結(jié)束渲染
                    Graph_EndScene();
                }


                
            return false;
            }


            WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, 
            int)
            {
                
            //創(chuàng)建游戲引擎
                if (!Engine_Create()) return 0;

                System_SetState(GGE_TITLE, 
            "Galaxy2D Game Engine - Hello World");
                
            //設(shè)置幀函數(shù)
                System_SetState(GGE_FRAMEFUNC, Frame);
                
            //設(shè)置幀率
                System_SetState(GGE_FPS, 30);

                
            //系統(tǒng)初始化
                if (System_Initiate()) 
                
            {
                    
            //開始運行幀函數(shù)
                    System_Start();
                }


                
            //關(guān)閉引擎,釋放資源
                Engine_Release();
                
            return 0;
            }


            如果編譯成功運行該程序?qū)谄聊恢虚g顯示一個白色的方塊,現(xiàn)在我們回顧一下前面的代碼,看看Galaxy2D游戲引擎是如何運作的。

            WinMain()函數(shù)中首先調(diào)用Engine_Create()函數(shù),這個函數(shù)將初始化游戲引擎運行環(huán)境以及進行一些基礎(chǔ)檢測。之后調(diào)用System_SetState()函數(shù)設(shè)置了一些引擎運行狀態(tài),這些狀態(tài)后面會講到,然后就可以調(diào)用System_Initiate()進行引擎初始化。如果引擎初始化成功調(diào)用System_Start()函數(shù),至此游戲引擎才真正開始運作。最后,在游戲引擎關(guān)閉時必須調(diào)用Engine_Release()做一些清理工作。

            在引擎初始化之前我們設(shè)置了三個狀態(tài),首先是“GGE_TITLE”,這個狀態(tài)設(shè)置的是程序標題欄文字;然后是“GGE_FRAMEFUNC”,這個狀態(tài)設(shè)置幀函數(shù),也就是游戲的主循環(huán);最后是“GGE_FPS”,這個狀態(tài)告訴引擎主循環(huán)將以30fps的幀率運行,減小CPU占用率。需要注意的是“GGE_FRAMEFUNC”和“GGE_FPS”是可以在運行時更改的,而“GGE_TITLE”一旦系統(tǒng)初始化完畢就無法更改了,詳細信息可以查看引擎文檔。

            為了在屏幕中間畫一個白色的方塊,在幀函數(shù)Frame()里做了如下工作。首先調(diào)用Graph_BeginScene()函數(shù)告訴引擎要開始畫東西了,如果該函數(shù)返回true表示引擎已準備好,接下來調(diào)用Graph_Clear()清屏,然后用Graph_RenderQuad()函數(shù)畫矩形,最后調(diào)用Graph_EndScene()告訴引擎東西全都畫完了。

            Feedback

            # re: Galaxy2D游戲引擎教程1 - Hello World  回復(fù)  更多評論   

            2010-01-02 17:02 by Davy.xu
            開源吧,HGE都開源了,你的接口跟HGE也差不多

            # re: Galaxy2D游戲引擎教程1 - Hello World  回復(fù)  更多評論   

            2010-01-02 19:58 by 劍孤寒
            你好,
            Galaxy2D游戲引擎暫時不會開源,
            如果以后有時間重構(gòu)引擎的話會考慮開源現(xiàn)在的版本。

            接口跟HGE差不多是因為接口本來就是抄HGE的:)
            早在2004年我就已經(jīng)接觸HGE了,
            由于當(dāng)時HGE還沒有開源,
            很多擴展功能不容易實現(xiàn),
            而且還不支持中文,
            所以寫了個HGE中文加強版,
            接口是抄HGE的,
            而內(nèi)部實現(xiàn)都是自己寫的(后來HGE開源后發(fā)現(xiàn)內(nèi)部代碼結(jié)構(gòu)還沒有我寫的好^_^),
            經(jīng)過幾次大的改版最終形成現(xiàn)在的Galaxy2D游戲引擎。

            Galaxy2D雖然接口跟HGE相似,但內(nèi)部實現(xiàn)其實有很大差別,Galaxy2D相對HGE有以下優(yōu)點:
            1.自帶音頻播放功能,HGE需要通過bass.dll播放音頻文件,而bass.dll是要收費滴
            2.支持視頻播放,可以控制時間軸以實現(xiàn)像《幻想三國志》那樣的帶對話的過場動畫
            3.支持高效中文字體渲染,支持字體加邊、字體陰影,自動換行,行間距,字間距,保存/回復(fù)字體當(dāng)前狀態(tài)等功能
            4.支持任意尺寸貼圖,即使超過顯卡最大紋理尺寸也沒關(guān)系
            5.RenderTarget紋理也可以鎖定,并且在設(shè)備丟失后不會丟失紋理上的內(nèi)容
            6.增強型粒子系統(tǒng)以及粒子編輯器
            7.可以很容易的跟MFC等應(yīng)用程序框架結(jié)合制作游戲工具
            8.基于Window的GUI系統(tǒng)并帶有GUI布局器(以后有時間會增加一些新控件和新的GUI編輯器)
            9.支持PixelShader,可以用GPU高效的實現(xiàn)一些特殊效果
            10.帶有一個游戲應(yīng)用程序框架,封裝了一些常用功能,比如游戲內(nèi)嵌控制臺和程序崩潰自動生成dump文件等
            11.提供渲染對象管理框架
            12.提供擴展資源管理器
            13.提供擴展序列幀動畫
            14.提供導(dǎo)出類到lua的一些幫助函數(shù),支持多繼承

            # re: Galaxy2D游戲引擎教程1 - Hello World  回復(fù)  更多評論   

            2010-01-03 16:09 by Sunshine Alike
            支持一下,新近剛開始學(xué)習(xí)游戲引擎,有時間學(xué)習(xí)一下博主的引擎 @_@

            # re: Galaxy2D游戲引擎教程1 - Hello World  回復(fù)  更多評論   

            2010-01-03 17:21 by 劍孤寒
            呵呵,多謝支持:)

            # re: Galaxy2D游戲引擎教程1 - Hello World  回復(fù)  更多評論   

            2010-01-13 17:04 by xxx
            希望能提供更多得引擎教程,謝謝!
            看了博主的引擎收益匪淺,能不能再引擎中加入網(wǎng)絡(luò)通信

            # re: Galaxy2D游戲引擎教程1 - Hello World  回復(fù)  更多評論   

            2010-01-13 20:23 by 劍孤寒
            嗯,
            教程會陸續(xù)放出,
            由于現(xiàn)在已經(jīng)有很多很好的網(wǎng)絡(luò)庫了,
            所以Galaxy2D暫時不會考慮加入網(wǎng)絡(luò)庫,
            謝謝你的支持:)

            # re: Galaxy2D游戲引擎教程1 - Hello World  回復(fù)  更多評論   

            2010-02-01 15:06 by 小蔥
            很不錯的引擎啊
            之前有用過HGE的
            現(xiàn)在改用你的啦~
            加油加油~

            # re: Galaxy2D游戲引擎教程1 - Hello World  回復(fù)  更多評論   

            2010-02-02 18:26 by 劍孤寒
            呵呵,
            多謝支持,
            在使用中如果遇到什么問題請在相應(yīng)版本引擎發(fā)布帖留言,
            我會及時處理的:)

            # re: Galaxy2D游戲引擎教程1 - Hello World  回復(fù)  更多評論   

            2015-03-18 22:32 by 閔聰
            這個不見了

            # re: Galaxy2D游戲引擎教程1 - Hello World  回復(fù)  更多評論   

            2015-03-19 09:16 by 劍孤寒
            恩,因為放上來的文件總是無故失蹤,所以刪掉了,請自己建個工程,按說明文檔調(diào)好配置,再把上面的代碼復(fù)制進去就可以了
            精品久久人人爽天天玩人人妻 | 久久久久久亚洲精品不卡| 久久综合九色综合网站| 亚洲中文字幕伊人久久无码 | 久久w5ww成w人免费| 一本久久综合亚洲鲁鲁五月天亚洲欧美一区二区 | AV狠狠色丁香婷婷综合久久| 亚洲色婷婷综合久久| 久久福利资源国产精品999| 香蕉久久影院| 久久人妻无码中文字幕| 久久久久久久久波多野高潮| 亚洲熟妇无码另类久久久 | 一本色道久久综合狠狠躁| 久久www免费人成看片| 一本久道久久综合狠狠爱| 国产成年无码久久久久毛片| 青青草国产精品久久| 久久人人爽人人精品视频| 一本色道久久综合| 亚洲国产精品高清久久久| 国内精品久久久久影院优 | 狠狠色丁香久久婷婷综合| 国产色综合久久无码有码| 久久91综合国产91久久精品| 久久国产一片免费观看| 亚洲中文久久精品无码| 久久这里只有精品久久| 婷婷久久五月天| 91久久精品91久久性色| 日本加勒比久久精品| 久久发布国产伦子伦精品| 日本福利片国产午夜久久| 欧美亚洲国产精品久久久久| 97热久久免费频精品99| 久久综合一区二区无码| 久久av无码专区亚洲av桃花岛| 国产日韩久久免费影院| 人妻精品久久久久中文字幕69| 狠狠人妻久久久久久综合蜜桃| 久久香综合精品久久伊人|