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

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

E-mail:zbln426@163.com QQ:85132383 長期尋找對戰略游戲感興趣的合作伙伴。

常用鏈接

留言簿(21)

隨筆分類

隨筆檔案

SDL相關網站

我的個人網頁

我的小游戲

資源下載

搜索

  •  

積分與排名

  • 積分 - 495961
  • 排名 - 39

最新評論

閱讀排行榜

評論排行榜

作者:龍飛

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

1.1:整理兩種SDL_Surface的關系。

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

1.2:構建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;
};
        我先設定了一個靜態int作為計數器。我的考慮是,screen surface實際上只需要建立一個。并且,其他的surface實際上都是“依賴”于這個surface才能顯示出來的。在SDL中,多次SDL_SetVideoMode()的效果實際上是保留了最后一次的surface作為了screen surface,所以,多次SDL_SetVideoMode()其實是沒有實際意義的。計數器screenNum用于保證只創建一次screen surface,多次創建我傾向讓程序拋出異常。
        構建函數除了調用SDL_SetVideoMode()函數,還作為SDL_Init()的啟動載入。所以,我專門定義析構函數的目的,是因為C++會在類對象消亡的時候自動調用析構函數。因為保證了只建立一個screen surface,并且在創建對象的時候載入了SDL_Init(),所以,如果析構函數中使用SDL_Quit(),則可以在手動調用析構函數或者程序結束的時候調用SDL_Quit()了。
        方法point()返回對象中的pScreen,其實就是SDL_Surface結構的指針。因為SDL庫是C風格的,所以,直接使用指針的函數很多。
        方法flip()用于把screen surface最終顯示出來。

1.3:screen surface的類方法。
int ScreenSurface::screenNum = 0;
首先為靜態變量附初值。
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
++;
}
構造函數。如果創建1個以上的screen surface,則會拋出異常。
ScreenSurface::~ScreenSurface()
{
    SDL_Quit();
}
析構函數。在對象消亡時,退出SDL系統。
SDL_Surface* ScreenSurface::point() const
{
    
return pScreen;
}
返回screen surface中SDL_Surface結構的指針,主要提供給SDL的函數調用。
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) 評論(2)  編輯 收藏 引用 所屬分類: SDL入門教程

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

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

很佩服lz.  回復  更多評論
  
# re: SDL入門教程(五):1、構建SDL screen surface類[未登錄] 2013-06-13 10:06 jk
SetVideoMode是在構造函數中調用的,那就有一個問題:實例化該類的線程就要負責進行PollEvent,但這樣會暴露出SDL內部操作,同時會增加線程輪詢的負擔.

個人更傾向于將SetVideoMode封裝到類中的靜態線程中進行,同時該線程也負責PollEvent的操作.  回復  更多評論
  
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
              欧美一区二区视频在线观看| 欧美二区在线看| 国产九九精品视频| 欧美在线免费| 久久福利一区| 在线免费观看日本一区| 欧美电影资源| 欧美精品亚洲一区二区在线播放| 一本色道久久综合精品竹菊| 99热精品在线| 国产私拍一区| 亚洲高清网站| 欧美三级在线视频| 欧美在线免费播放| 老司机午夜精品视频在线观看| 亚洲精品久久久一区二区三区| aa亚洲婷婷| 国模精品娜娜一二三区| 亚洲高清久久久| 国产精品久久亚洲7777| 久久色中文字幕| 欧美剧在线免费观看网站| 欧美一区二区黄| 免费看成人av| 欧美中文字幕不卡| 欧美成年人视频| 欧美一区二粉嫩精品国产一线天| 久久久久国产精品一区二区| 99人久久精品视频最新地址| 欧美一级片久久久久久久| 亚洲精品美女久久久久| 亚洲欧美第一页| 亚洲精品一区二区三| 羞羞视频在线观看欧美| 亚洲看片网站| 久久国产精品99国产| 亚洲香蕉在线观看| 欧美 日韩 国产一区二区在线视频 | 国产精品vip| 欧美激情偷拍| 国语自产精品视频在线看抢先版结局 | 亚洲第一福利视频| 国产精品婷婷| 日韩午夜激情电影| 亚洲风情亚aⅴ在线发布| 亚洲一区二区精品在线| 99国产精品99久久久久久粉嫩| 久久九九国产| 久久狠狠久久综合桃花| 欧美亚男人的天堂| 亚洲精品一区二区在线观看| 一区二区在线观看av| 亚洲香蕉网站| 亚洲一区二区三区视频播放| 欧美激情亚洲| 亚洲黄一区二区三区| 精品成人国产在线观看男人呻吟| 亚洲一区观看| 欧美一级午夜免费电影| 欧美视频精品一区| 亚洲美女毛片| 亚洲一品av免费观看| 欧美日韩成人一区二区三区| 欧美激情日韩| 亚洲精品国产精品乱码不99| 麻豆精品在线观看| 亚洲电影免费观看高清| 亚洲国产一区二区三区a毛片| 久久久五月婷婷| 欧美成人精品三级在线观看| 在线观看欧美日韩国产| 另类酷文…触手系列精品集v1小说| 久久综合五月| 在线观看国产成人av片| 久久一日本道色综合久久| 农村妇女精品| 99re在线精品| 欧美午夜片欧美片在线观看| 亚洲欧美国产va在线影院| 久久不射中文字幕| 在线观看国产一区二区| 欧美精品久久久久久| 日韩视频免费| 久久久91精品国产一区二区三区| 国产香蕉97碰碰久久人人| 欧美在线首页| 亚洲国产成人av| 亚洲一二三区精品| 国产一区视频观看| 免费日韩成人| 亚洲婷婷综合久久一本伊一区| 性欧美激情精品| 在线电影院国产精品| 欧美日韩国产页| 亚洲欧美日韩精品一区二区| 欧美va天堂| 亚洲欧美成人| 在线观看日韩| 国产精品久久久久免费a∨| 久久成人精品视频| 最新日韩在线| 久久午夜精品一区二区| 99国产精品久久久久久久成人热| 国产精品乱人伦一区二区| 欧美一区二区精品在线| 亚洲激情av| 久久―日本道色综合久久| 一本色道久久精品| 在线播放不卡| 国产情侣一区| 欧美深夜福利| 欧美成人精品| 久久成人免费视频| 中国亚洲黄色| 亚洲国产裸拍裸体视频在线观看乱了中文 | 新狼窝色av性久久久久久| 亚洲电影欧美电影有声小说| 欧美日韩亚洲一区在线观看| 久久九九热re6这里有精品| 9久re热视频在线精品| 欧美国产国产综合| 久久一区二区三区四区| 亚洲欧美精品在线观看| 亚洲精品在线三区| 伊人精品久久久久7777| 国产精品日日摸夜夜摸av| 欧美日韩亚洲激情| 免费试看一区| 老司机aⅴ在线精品导航| 久久精品国产清高在天天线| 亚洲午夜伦理| 亚洲天堂视频在线观看| 日韩视频中午一区| 亚洲国产精品ⅴa在线观看 | 一区二区三区产品免费精品久久75| 国内自拍视频一区二区三区| 国产精品视频成人| 国产精品久久久久99| 国产精品成人免费视频| 欧美日韩中文字幕日韩欧美| 欧美激情a∨在线视频播放| 欧美va亚洲va香蕉在线| 每日更新成人在线视频| 亚洲另类春色国产| 亚洲视频一二| 最新亚洲一区| 91久久线看在观草草青青| 激情成人在线视频| 一区二区三区在线不卡| 国产一区视频在线看| 国产亚洲精品久久久久动| 国产精品视频| 国产综合欧美在线看| 国产一区二区精品在线观看| 韩国女主播一区二区三区| 国产在线日韩| 亚洲高清久久网| 亚洲另类一区二区| 一区二区欧美日韩视频| 亚洲自啪免费| 欧美专区中文字幕| 久久影视精品| 亚洲国产欧美一区二区三区同亚洲 | 亚洲国产视频a| 日韩一级黄色片| 亚洲自拍偷拍一区| 久久久精品一品道一区| 蜜臀av一级做a爰片久久| 欧美极品影院| 国产精品久久一级| 在线观看欧美视频| 一区二区免费在线播放| 先锋影音网一区二区| 久热re这里精品视频在线6| 亚洲二区视频| 亚洲一区在线播放| 巨乳诱惑日韩免费av| 欧美午夜在线一二页| 一区二区在线看| 一区二区三区久久| 久久一区亚洲| 一本到12不卡视频在线dvd| 欧美在线综合| 欧美三级乱码| 亚洲国产精品尤物yw在线观看| 亚洲永久在线观看| 欧美成人国产| 午夜一区二区三区在线观看 | av成人黄色| 久久蜜桃av一区精品变态类天堂| 欧美久久久久中文字幕| 在线观看亚洲专区| 亚洲午夜在线| 欧美激情中文不卡| 香蕉久久一区二区不卡无毒影院 | 欧美视频一区二区三区四区| 亚洲成人在线网站| 久久aⅴ国产紧身牛仔裤| 亚洲欧洲在线播放| 久久久亚洲人|