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

            劍孤寒的小站

            人生的價(jià)值不是用時(shí)間,而是用深度去衡量的!
            posts - 75, comments - 290, trackbacks - 0, articles - 0

            這篇教程將介紹如何用Galaxy2D游戲引擎構(gòu)建一個(gè)最基礎(chǔ)的應(yīng)用程序。

             

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

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

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

            3. 附加依賴項(xiàng)中加入"engine/lib/galaxy2d.lib"

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

             

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

            #include "ggebase.h"
            using namespace gge;

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

                    
            //畫一個(gè)矩形
                    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()) 
                
            {
                    
            //開始運(yùn)行幀函數(shù)
                    System_Start();
                }


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


            如果編譯成功運(yùn)行該程序?qū)?huì)在屏幕中間顯示一個(gè)白色的方塊,現(xiàn)在我們回顧一下前面的代碼,看看Galaxy2D游戲引擎是如何運(yùn)作的。

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

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

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

            Feedback

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

            2015-03-18 22:32 by 閔聰
            這個(gè)不見了

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

            2015-03-19 09:16 by 劍孤寒
            恩,因?yàn)榉派蟻淼奈募偸菬o故失蹤,所以刪掉了,請(qǐng)自己建個(gè)工程,按說明文檔調(diào)好配置,再把上面的代碼復(fù)制進(jìn)去就可以了
            狠狠色伊人久久精品综合网 | 久久精品无码一区二区三区日韩| 亚洲AV无码一区东京热久久| 久久久中文字幕日本| 国产精品gz久久久| 久久午夜无码鲁丝片午夜精品| 精品99久久aaa一级毛片| 色综合久久天天综合| 久久香蕉综合色一综合色88| 国产国产成人精品久久| 久久免费国产精品一区二区| 99久久免费只有精品国产| 久久精品99无色码中文字幕| 日日狠狠久久偷偷色综合免费 | 亚洲va久久久噜噜噜久久男同| 久久丫精品国产亚洲av| 久久福利青草精品资源站| 狠狠色综合久久久久尤物| 久久久久人妻精品一区三寸蜜桃| 一级女性全黄久久生活片免费| 亚洲中文字幕无码一久久区| 国产精品久久波多野结衣| 精品多毛少妇人妻AV免费久久| 久久久久亚洲精品日久生情| 久久久久久久亚洲Av无码| 国产精品伊人久久伊人电影| 亚洲精品NV久久久久久久久久| 久久亚洲精品成人AV| 久久久久久国产a免费观看不卡 | 亚洲国产精品无码久久| 亚洲国产天堂久久综合网站| 亚洲国产成人精品91久久久| 久久99国产综合精品免费| 免费一级做a爰片久久毛片潮| 欧美牲交A欧牲交aⅴ久久| 久久久久久极精品久久久| 久久人人爽人人爽人人AV| 久久精品亚洲男人的天堂| 久久AV高清无码| 久久婷婷国产剧情内射白浆| 99久久成人18免费网站|