亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? sdl很好的教程.txt

?? 用sdl開發小型游戲的
?? TXT
?? 第 1 頁 / 共 2 頁
字號:

讓我們在做一個彩色的屏幕(如你看見的截圖)。我們通過一個循環把所有坐標繪制上去。在循環前添加鎖定屏幕的函數,在循環后添加解鎖的函數。Drawpixel函數在屏幕surface(緩沖)上繪制彩色的像素(每個像素顏色不同),然后使用SDL_Flip把緩沖(screen surface)繪制到實際的計算機屏幕上。

Slock(screen);

for(int x=0;x<640;x++)

{

  for(int y=0;y<480;y++)

  {

    DrawPixel(screen, x,y,y/2,y/2,x/3);

  }

}

Sulock(screen);

SDL_Flip(screen);

注意:實際上一直往屏幕上繪制像素是很慢的。通常只有在需要時,才繪制需要的某一部分。更多的請看以后的教程。

把 // DRAWING GOES HERE 替換成上述代碼,并允許程序。你會看見一個彩色的窗口,但只存在很短的時間。為了存在時間長一點,添加一個循環:

for(i=0;i<100;i++)

{

  Slock(screen);

  for(int x=0;x<640;x++)

  {

    for(int y=0;y<480;y++)

    {

      DrawPixel(screen, x,y,y/2,y/2,x/3);

    }

  }

  Sulock(screen);

  SDL_Flip(screen);

}

循環100次,然后退出。但還有更好的方法: 

我們把繪圖代碼放入一個函數:

void DrawScene(SDL_Surface *screen)

{

  Slock(screen);

  for(int x=0;x<640;x++)

  {

    for(int y=0;y<480;y++)

    {

      DrawPixel(screen, x,y,y/2,y/2,x/3);

    }

  }

  Sulock(screen);

  SDL_Flip(screen);

}

在main()函數中,我們創建一個游戲循環。游戲循環是一個循環,直至退出。我們的游戲循環是一個while循環,當done等于0時循環。

int done=0;

 

while(done == 0)

{

  // CODE

}

在游戲循環中,我們檢測是否ESC鍵或窗口上的X按鈕被按下了。如果按下了,則令done等于1,那么循環就會結束。

一切的SDL事件使用SDL_Event結構表示。我們需要一個SDL_Event變量來檢測時間:

SDL_Event event;

我們不停的獲取事件(直至沒有事件發生):

while ( SDL_PollEvent(&event) )

{

 

}

在每個 while(...) {...}中, SDL_Event 會包含事件的信息。然后我們確定事件的類型。

if ( event.type == SDL_QUIT )  {  done = 1;  }

 

if ( event.type == SDL_KEYDOWN )

{

  // CODE

}

如果我們得到了退出的事件(關閉按鈕被按下),我們令done等于1。如果一個按鍵被按下,我們在確定哪個鍵被按下:

if ( event.key.keysym.sym == SDLK_ESCAPE ) { done = 1; }

所有的鍵盤上的按鍵名字都以SDLK_開頭。查看 SDL_keysym.h文件來得到更多的SDLK_ 鍵名字。事件檢測之后:

DrawScene(screen);

好了,下列是全部的代碼:

#include <stdio.h>

#include <stdlib.h>

 

#include <SDL/SDL.h>

 

void Slock(SDL_Surface *screen)

{

  if ( SDL_MUSTLOCK(screen) )

  {

    if ( SDL_LockSurface(screen) < 0 )

    {

      return;

    }

  }

}

 

void Sulock(SDL_Surface *screen)

{

  if ( SDL_MUSTLOCK(screen) )

  {

    SDL_UnlockSurface(screen);

  }

}

 

void DrawPixel(SDL_Surface *screen, int x, int y,

                                    Uint8 R, Uint8 G, Uint8 B)

{

  Uint32 color = SDL_MapRGB(screen->format, R, G, B);

  switch (screen->format->BytesPerPixel)

  {

    case 1: // Assuming 8-bpp

      {

        Uint8 *bufp;

        bufp = (Uint8 *)screen->pixels + y*screen->pitch + x;

        *bufp = color;

      }

      break;

    case 2: // Probably 15-bpp or 16-bpp

      {

        Uint16 *bufp;

        bufp = (Uint16 *)screen->pixels + y*screen->pitch/2 + x;

        *bufp = color;

      }

      break;

    case 3: // Slow 24-bpp mode, usually not used

      {

        Uint8 *bufp;

        bufp = (Uint8 *)screen->pixels + y*screen->pitch + x * 3;

        if(SDL_BYTEORDER == SDL_LIL_ENDIAN)

        {

          bufp[0] = color;

          bufp[1] = color >> 8;

          bufp[2] = color >> 16;

        } else {

          bufp[2] = color;

          bufp[1] = color >> 8;

          bufp[0] = color >> 16;

        }

      }

      break;

    case 4: // Probably 32-bpp

      {

        Uint32 *bufp;

        bufp = (Uint32 *)screen->pixels + y*screen->pitch/4 + x;

        *bufp = color;

      }

      break;

  }

}

 

void DrawScene(SDL_Surface *screen)

{

  Slock(screen);

  for(int x=0;x<640;x++)

  {

    for(int y=0;y<480;y++)

    {

      DrawPixel(screen, x,y,y/2,y/2,x/3);

    }

  }

  Sulock(screen);

  SDL_Flip(screen);

}

 

int main(int argc, char *argv[])

{

 

  if ( SDL_Init(SDL_INIT_AUDIO|SDL_INIT_VIDEO) < 0 )

  {

    printf("Unable to init SDL: %s\n", SDL_GetError());

    exit(1);

  }

  atexit(SDL_Quit);

 

  SDL_Surface *screen;

  screen=SDL_SetVideoMode(640,480,32,SDL_HWSURFACE|SDL_DOUBLEBUF);

  if ( screen == NULL )

  {

    printf("Unable to set 640x480 video: %s\n", SDL_GetError());

    exit(1);

  }

  int done=0;

 

  while(done == 0)

  {

    SDL_Event event;

 

    while ( SDL_PollEvent(&event) )

    {

      if ( event.type == SDL_QUIT )  {  done = 1;  }

 

      if ( event.type == SDL_KEYDOWN )

      {

        if ( event.key.keysym.sym == SDLK_ESCAPE ) { done = 1; }

      }

    }

 

    DrawScene(screen);

  }

 

  return 0;

}

 




Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=282166

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品久久久久婷婷二区次| 日本怡春院一区二区| 亚洲成人www| 国产成人av网站| 欧美色视频在线| 国产精品乱码人人做人人爱| 午夜精品福利在线| 91在线无精精品入口| 精品理论电影在线观看| 亚洲一区二区在线免费观看视频| 黄色成人免费在线| 欧美日韩在线一区二区| 国产精品国产馆在线真实露脸| 精品夜夜嗨av一区二区三区| 精品视频在线看| 亚洲天天做日日做天天谢日日欢| 国产一区久久久| 91精品国产高清一区二区三区蜜臀| 一区二区三区精品视频| 福利电影一区二区三区| 久久这里只有精品视频网| 日韩精品久久理论片| 欧美日韩一区三区| 亚洲激情自拍偷拍| 一本一道波多野结衣一区二区| 国产色产综合色产在线视频 | 亚洲一二三四区不卡| 国产91在线|亚洲| 久久色视频免费观看| 免费日韩伦理电影| 欧美一区二区三区四区五区| 日韩不卡免费视频| 7799精品视频| 蜜臀av性久久久久蜜臀aⅴ | 国产夜色精品一区二区av| 麻豆精品一区二区三区| 欧美一区二区美女| 美腿丝袜在线亚洲一区| 日韩精品一区二区三区蜜臀| 久久综合综合久久综合| 精品精品欲导航| 精品一区二区在线观看| 久久久久久**毛片大全| 国产精品白丝jk黑袜喷水| 国产精品狼人久久影院观看方式| 色综合中文字幕| 亚洲成人av电影在线| 日韩一区二区三区四区| 国产精品一区免费在线观看| 国产精品久久久久国产精品日日| 91黄色免费看| 日韩国产欧美视频| 久久蜜桃一区二区| 91理论电影在线观看| 水蜜桃久久夜色精品一区的特点| 精品嫩草影院久久| 成人高清视频免费观看| 亚洲激情图片一区| 日韩免费一区二区| 成人免费看的视频| 亚洲综合一区二区三区| 91麻豆精品国产91久久久使用方法 | **欧美大码日韩| 色婷婷综合久色| 亚洲午夜精品17c| 这里只有精品视频在线观看| 久久丁香综合五月国产三级网站| 久久久久综合网| www.色精品| 亚洲欧洲综合另类| 欧美体内she精视频| 蜜臀av一级做a爰片久久| 欧美久久久影院| 国内精品伊人久久久久av一坑| 国产日韩精品一区二区浪潮av | 精品国产免费人成在线观看| 91麻豆自制传媒国产之光| 亚洲精品久久久蜜桃| 欧美日本高清视频在线观看| 麻豆精品久久久| 欧美激情一二三区| 欧美日韩国产美女| 国产69精品久久99不卡| 亚洲综合小说图片| 日韩一级片在线播放| 国产成人av一区二区三区在线观看| 亚洲天堂中文字幕| 精品电影一区二区| 色婷婷综合久久| 精品在线观看免费| 亚洲综合清纯丝袜自拍| 欧美疯狂做受xxxx富婆| 91成人在线精品| 国产精品1区2区3区| 亚洲午夜国产一区99re久久| 久久伊人中文字幕| 欧美主播一区二区三区| 国产激情91久久精品导航| 亚洲韩国精品一区| 国产精品区一区二区三区| 日韩久久免费av| 精品视频一区 二区 三区| 国产+成+人+亚洲欧洲自线| 日韩中文字幕av电影| 国产精品女同互慰在线看| 欧美α欧美αv大片| 欧美综合视频在线观看| 国产乱码精品一区二区三区av| 一区二区久久久| 亚洲乱码国产乱码精品精98午夜| 国产色综合一区| 精品国产一区二区三区四区四| 欧美日韩一区二区三区高清| 99在线精品一区二区三区| 蜜乳av一区二区| 性做久久久久久久久| 中文字幕欧美日本乱码一线二线| 欧美国产一区二区| 精品久久久久99| 日韩欧美中文字幕制服| 在线播放日韩导航| 欧美三级乱人伦电影| 色哟哟亚洲精品| 91免费国产视频网站| 成人精品一区二区三区四区| 国产·精品毛片| 不卡大黄网站免费看| 国产91精品欧美| 成人一区二区三区视频在线观看 | 8x福利精品第一导航| 欧洲一区在线电影| 91老师片黄在线观看| av在线这里只有精品| 99久久er热在这里只有精品66| 不卡一区中文字幕| 成人一级片网址| 午夜影院久久久| 韩国av一区二区三区在线观看| 另类专区欧美蜜桃臀第一页| 激情综合色丁香一区二区| 美女视频黄 久久| 国产一区二区三区日韩| 老司机精品视频一区二区三区| 精品无人区卡一卡二卡三乱码免费卡 | 久久亚洲一级片| 欧美一卡二卡在线| 精品国产三级电影在线观看| 久久久久久久久久久久久女国产乱 | 国产传媒久久文化传媒| 美女任你摸久久| 成人黄色一级视频| 色婷婷综合五月| 538在线一区二区精品国产| 精品久久久久久久久久久久包黑料 | 日韩一区二区三区观看| 精品乱码亚洲一区二区不卡| 国产情人综合久久777777| 国产精品久久久久久妇女6080 | 国产一区二区三区在线看麻豆| 国产99久久久国产精品免费看 | 久久蜜臀中文字幕| 亚洲日穴在线视频| 亚洲一区二区三区四区在线观看| 韩国精品一区二区| av在线综合网| 日韩欧美国产三级| 国产精品国产三级国产普通话99| 亚洲超丰满肉感bbw| 激情综合网av| 99久久亚洲一区二区三区青草 | 欧美午夜精品一区二区三区 | 久久久91精品国产一区二区三区| 中文字幕亚洲综合久久菠萝蜜| 亚洲一区二区欧美日韩| 国产精品综合二区| 91高清视频在线| 久久尤物电影视频在线观看| 成人欧美一区二区三区视频网页 | 粉嫩欧美一区二区三区高清影视| 99综合电影在线视频| 精品久久一二三区| 一二三区精品视频| 粉嫩欧美一区二区三区高清影视 | 蜜臀a∨国产成人精品| av在线播放成人| 精品成人a区在线观看| 亚洲欧美视频一区| 成人不卡免费av| 欧美xxxxxxxx| 视频一区中文字幕| 色网综合在线观看| 日本一区二区高清| 麻豆精品新av中文字幕| 欧美一区二区三区啪啪| 亚洲女女做受ⅹxx高潮| 国产精品亚洲第一| 精品电影一区二区三区| 日韩专区欧美专区| 欧美色视频在线| 亚洲人精品一区|