青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

隨筆 - 96  文章 - 255  trackbacks - 0
<2008年2月>
272829303112
3456789
10111213141516
17181920212223
2425262728291
2345678

E-mail:zbln426@163.com QQ:85132383 長(zhǎng)期尋找對(duì)戰(zhàn)略游戲感興趣的合作伙伴。

常用鏈接

留言簿(21)

隨筆分類

隨筆檔案

SDL相關(guān)網(wǎng)站

我的個(gè)人網(wǎng)頁

我的小游戲

資源下載

搜索

  •  

積分與排名

  • 積分 - 495949
  • 排名 - 39

最新評(píng)論

閱讀排行榜

評(píng)論排行榜

作者:龍飛

今天是元宵節(jié),新年過去,又要開始抓緊時(shí)間奮斗了。祝大家都能繼續(xù)追逐自己的夢(mèng)想。BS的書上引過一句話,“一個(gè)人要是不耕作,就必須寫作”,所以,不耕作的我不能停止寫作,time is money, my friend!

1.1:整理兩種SDL_Surface的關(guān)系。

        前面一直在用面向過程的思想寫程序,因?yàn)镺OP細(xì)分到每一個(gè)具體的方法,還是過程。OOP的難點(diǎn)其實(shí)在于理清楚不同類之間的關(guān)系。說實(shí)話,我只是為了自己的理想,為了實(shí)現(xiàn)我計(jì)劃的項(xiàng)目,剛剛開始學(xué)習(xí)C++的菜鳥。兩個(gè)多月的C++能有什么水平,希望前輩們不要見笑,我會(huì)繼續(xù)努力的。而且,可能因?yàn)閷?duì)于C++的偏愛,再加上我目前能找到的SDL相關(guān)教程都是C風(fēng)格的,所以我充滿了用C++來寫SDL教程挑戰(zhàn)的熱情。
        SDL_Surface是SDL的一個(gè)結(jié)構(gòu)。在我們前面的知識(shí)中,學(xué)習(xí)了構(gòu)建這個(gè)結(jié)構(gòu)的兩種方法:一種是通過SDL_SetVideoMode();一種是SDL_LoadBMP()。其實(shí),通過SDL_SetVideoMode()構(gòu)建的SDL_Surface是一種特殊的surface,因?yàn)椋瑢?shí)際上,其他的surface都是通過blit到這個(gè)surface上,最終通過flip這個(gè)surface,才能顯示出來。所以,這個(gè)surface可以看成是SDL庫中,數(shù)據(jù)形式的surface(儲(chǔ)存在電腦中)與實(shí)體形式的surface(通過屏幕顯示出來)的唯一接口。另外,因?yàn)闃?gòu)建這兩種surface需要的數(shù)據(jù)成員小同大異,類方法也不盡相同。所以,雖然我也考慮過建立一個(gè)基類把兩種surface作為派生類,但是我最終選擇了建立兩個(gè)類。

1.2:構(gòu)建SDL screen surface類。
class ScreenSurface
{
private:
    
static int screenNum;
    
int width;
    
int height;
    
int bpp;
    Uint32 flags;
    SDL_Surface
* pScreen;
public:
    ScreenSurface();
    ScreenSurface(
int w, int h, int b = 0, Uint32 f = 0);
    
~ScreenSurface();
    SDL_Surface
* point() const;
    
bool flip() const;
};
        我先設(shè)定了一個(gè)靜態(tài)int作為計(jì)數(shù)器。我的考慮是,screen surface實(shí)際上只需要建立一個(gè)。并且,其他的surface實(shí)際上都是“依賴”于這個(gè)surface才能顯示出來的。在SDL中,多次SDL_SetVideoMode()的效果實(shí)際上是保留了最后一次的surface作為了screen surface,所以,多次SDL_SetVideoMode()其實(shí)是沒有實(shí)際意義的。計(jì)數(shù)器screenNum用于保證只創(chuàng)建一次screen surface,多次創(chuàng)建我傾向讓程序拋出異常。
        構(gòu)建函數(shù)除了調(diào)用SDL_SetVideoMode()函數(shù),還作為SDL_Init()的啟動(dòng)載入。所以,我專門定義析構(gòu)函數(shù)的目的,是因?yàn)镃++會(huì)在類對(duì)象消亡的時(shí)候自動(dòng)調(diào)用析構(gòu)函數(shù)。因?yàn)楸WC了只建立一個(gè)screen surface,并且在創(chuàng)建對(duì)象的時(shí)候載入了SDL_Init(),所以,如果析構(gòu)函數(shù)中使用SDL_Quit(),則可以在手動(dòng)調(diào)用析構(gòu)函數(shù)或者程序結(jié)束的時(shí)候調(diào)用SDL_Quit()了。
        方法point()返回對(duì)象中的pScreen,其實(shí)就是SDL_Surface結(jié)構(gòu)的指針。因?yàn)镾DL庫是C風(fēng)格的,所以,直接使用指針的函數(shù)很多。
        方法flip()用于把screen surface最終顯示出來。

1.3:screen surface的類方法。
int ScreenSurface::screenNum = 0;
首先為靜態(tài)變量附初值。
ScreenSurface::ScreenSurface():
width(
640), height(480), bpp(32), flags(0)
{
    
if ( screenNum > 0 )
        
throw "DONOT create more than ONE screen!";
    
if ( SDL_Init(SDL_INIT_VIDEO < 0 ) )
        
throw SDL_GetError();
    pScreen 
= SDL_SetVideoMode(width, height, bpp, flags);
    screenNum
++;
}

ScreenSurface::ScreenSurface(
int w, int h, int b, Uint32 f):
width(w), height(h), bpp(b), flags(f)
{
    
if ( screenNum > 0 )
        
throw "DONOT create more than ONE screen!";
    
if ( SDL_Init(SDL_INIT_VIDEO < 0 ) )
        
throw SDL_GetError();
    pScreen 
= SDL_SetVideoMode(width, height, bpp, flags);
    screenNum
++;
}
構(gòu)造函數(shù)。如果創(chuàng)建1個(gè)以上的screen surface,則會(huì)拋出異常。
ScreenSurface::~ScreenSurface()
{
    SDL_Quit();
}
析構(gòu)函數(shù)。在對(duì)象消亡時(shí),退出SDL系統(tǒng)。
SDL_Surface* ScreenSurface::point() const
{
    
return pScreen;
}
返回screen surface中SDL_Surface結(jié)構(gòu)的指針,主要提供給SDL的函數(shù)調(diào)用。
bool ScreenSurface::flip() const
{
    
if ( SDL_Flip(pScreen) < 0 )
        
return false;
    
else return true;
}
顯示(彈出flip)screen surface到屏幕上。
posted on 2008-02-21 13:13 lf426 閱讀(6258) 評(píng)論(2)  編輯 收藏 引用 所屬分類: SDL入門教程

FeedBack:
# re: SDL入門教程(五):1、構(gòu)建SDL screen surface類 2009-08-07 15:17 王芳杰
LZ,這個(gè)變量應(yīng)該是沒有必要的吧。

不是有個(gè)函數(shù)SDL_wasInit的方法嗎,可以判斷他是否為0,來判斷pScreen
是否被初始過了,還有這個(gè)既然pScreen擔(dān)任內(nèi)存至顯示唯一接口的作用,那么這個(gè)CScreenSurface貌似做個(gè)單鍵更合理些。

很佩服lz.  回復(fù)  更多評(píng)論
  
# re: SDL入門教程(五):1、構(gòu)建SDL screen surface類[未登錄] 2013-06-13 10:06 jk
SetVideoMode是在構(gòu)造函數(shù)中調(diào)用的,那就有一個(gè)問題:實(shí)例化該類的線程就要負(fù)責(zé)進(jìn)行PollEvent,但這樣會(huì)暴露出SDL內(nèi)部操作,同時(shí)會(huì)增加線程輪詢的負(fù)擔(dān).

個(gè)人更傾向于將SetVideoMode封裝到類中的靜態(tài)線程中進(jìn)行,同時(shí)該線程也負(fù)責(zé)PollEvent的操作.  回復(fù)  更多評(píng)論
  
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
              一区二区高清在线| 国产一区二区在线免费观看| 久久精品国产欧美激情| 一本色道久久综合亚洲精品不| 另类成人小视频在线| 亚洲女同性videos| 99精品欧美一区| 亚洲大片av| 国内偷自视频区视频综合| 欧美天天在线| 欧美精品久久久久久久久久| 久久精品一区二区三区不卡| 亚洲欧美日韩精品久久奇米色影视| 日韩天堂在线观看| 亚洲人成久久| 欧美成人官网二区| 美女网站在线免费欧美精品| 欧美影院午夜播放| 欧美一乱一性一交一视频| 亚洲香蕉网站| 99热这里只有精品8| 亚洲精品久久久蜜桃| 悠悠资源网亚洲青| 在线观看亚洲精品| …久久精品99久久香蕉国产| 国产真实乱偷精品视频免| 国产亚洲va综合人人澡精品| 国产色视频一区| 国产视频观看一区| 国产在线欧美日韩| 激情综合色丁香一区二区| 黄色成人av网站| 一区在线视频观看| 亚洲国产欧洲综合997久久| 在线看视频不卡| 亚洲国内在线| 亚洲精选一区| 一区二区激情小说| 这里只有视频精品| 午夜精品久久久久久久99樱桃| 亚洲欧美视频一区二区三区| 欧美一区二区女人| 久久久久综合| 欧美成人免费在线观看| 欧美国产日本在线| 亚洲三级视频| 亚洲网站视频福利| 午夜精品久久| 久久综合九色综合欧美狠狠| 欧美成人性网| 欧美日韩在线精品| 国产欧美在线| 亚洲承认在线| av成人天堂| 亚洲欧美在线高清| 久久色中文字幕| 亚洲国产欧洲综合997久久| 日韩视频免费观看高清在线视频 | 欧美成人免费在线观看| 亚洲第一福利在线观看| 一本到高清视频免费精品| 亚洲综合精品一区二区| 久久亚洲精品网站| 欧美日韩视频在线一区二区| 国产亚洲精品高潮| 亚洲精品裸体| 西瓜成人精品人成网站| 久久琪琪电影院| 最新成人在线| 欧美在线观看一二区| 欧美高清视频一区二区| 国产伦精品一区二区三区照片91| 在线看日韩av| 午夜精品久久久久久99热| 蜜桃av一区二区| 国产精品99久久久久久有的能看| 久久久久久久综合狠狠综合| 欧美日韩免费看| 一区二区在线观看视频| 中文国产一区| 欧美成人第一页| 亚洲影院色在线观看免费| 久久综合久久综合这里只有精品| 国产精品国产三级欧美二区 | 久久夜色精品| 国产精品久久网站| 91久久在线播放| 久久av资源网| 9l国产精品久久久久麻豆| 久久视频在线视频| 国产精品美女www爽爽爽| 亚洲国产欧美另类丝袜| 欧美一区二区三区喷汁尤物| 91久久国产精品91久久性色| 欧美中文字幕视频| 国产精品你懂的在线| 99精品免费视频| 麻豆精品视频在线观看视频| 亚洲影院污污.| 欧美日韩国产精品| 亚洲人成人99网站| 麻豆精品91| 亚洲综合色在线| 欧美体内she精视频| 亚洲日本激情| 欧美大尺度在线观看| 性做久久久久久| 国产精品久久久久久久一区探花| 日韩一区二区高清| 亚洲大片av| 久久一区二区三区国产精品| 国产亚洲欧美在线| 欧美亚洲日本网站| 亚洲视频播放| 欧美日韩小视频| 夜夜爽夜夜爽精品视频| 亚洲高清不卡一区| 免费观看久久久4p| 亚洲国产午夜| 欧美成人蜜桃| 久久综合狠狠综合久久激情| 影音先锋久久资源网| 免费成人黄色av| 久久久av水蜜桃| 狠狠色丁香婷婷综合影院| 久久久在线视频| 久久成人av少妇免费| 国内精品99| 美日韩精品免费| 葵司免费一区二区三区四区五区| 红杏aⅴ成人免费视频| 美女精品一区| 裸体素人女欧美日韩| 亚洲精品国产精品国自产在线 | 久久久久久久性| 欧美专区日韩专区| 国模吧视频一区| 久热精品视频在线观看| 久久久久www| 亚洲二区在线| 91久久在线| 国产精品劲爆视频| 久久av在线| 久久久无码精品亚洲日韩按摩| 红桃视频欧美| 亚洲电影免费| 欧美色欧美亚洲另类二区 | 欧美一级专区免费大片| 国产自产高清不卡| 欧美福利视频在线| 欧美日韩一区二区三区在线看| 亚洲欧美精品suv| 欧美专区第一页| 91久久久久久| 在线一区二区日韩| 国产一区二区三区自拍| 亚洲高清一区二区三区| 欧美国产三级| 午夜精品久久久久久久久久久| 欧美一区二区三区日韩| 在线观看的日韩av| 日韩一区二区久久| 国模精品一区二区三区| 亚洲高清中文字幕| 国产精品久久久久久福利一牛影视| 欧美一区二区在线播放| 久久人91精品久久久久久不卡| 亚洲精品视频二区| 亚洲欧美日本另类| 亚洲国产精品一区制服丝袜| 日韩午夜电影在线观看| 国产日韩欧美日韩大片| 欧美激情第三页| 国产精品老牛| 欧美电影在线观看| 国产精品青草综合久久久久99| 噜噜噜在线观看免费视频日韩| 欧美激情1区2区3区| 久久精品国产亚洲一区二区三区 | 欧美xart系列高清| 国产精品国产三级国产专播精品人| 狼狼综合久久久久综合网| 欧美日韩在线免费观看| 久久尤物视频| 国产精品久久中文| 91久久久久久国产精品| 国产亚洲欧美日韩在线一区 | 久久久久网址| 午夜在线成人av| 欧美精品三级日韩久久| 久久久女女女女999久久| 欧美午夜在线一二页| 你懂的视频欧美| 国产日韩精品久久久| 亚洲精品网站在线播放gif| 一区在线免费| 性做久久久久久| 午夜欧美大片免费观看| 欧美激情一区二区三区四区| 可以免费看不卡的av网站|