第一章 認識SDL

2021-10-06 08:54:37 字數 3921 閱讀 7647

從sdl 2.0 roadmap中可以獲取到sdl2當前的規劃路線以及功能支援情況。

以下的sdl擴充套件庫已經支援sdl2版本:

在官方網頁中可獲取到當前穩定版本,包括原始碼、執行二進位制檔案以及開發庫。

sdl2 原始碼編譯請看這裡。

建立乙個空專案,配置好 sdl2 的標頭檔案和庫的引用,接著建立乙個 main.cpp 檔案,將以下**複製到 main.cpp 檔案中,編譯執行。

#includesdl_window* g_pwindow = 0;

sdl_renderer* g_prenderer = 0;

int main(int argc, char* args)

}else

// everything succeeded lets draw the window

// set to black // this function expects red, green, blue and

// alpha as color values

sdl_setrenderdrawcolor(g_prenderer, 0, 0, 0, 255);

// clear the window to black

sdl_renderclear(g_prenderer);

// show the window

sdl_renderpresent(g_prenderer);

// set a delay before quitting

sdl_delay(5000);

// clean up sdl

sdl_quit();

return 0;

}

解剖 hello sdl1.首先,包含標頭檔案:#include

2.第二步,建立一些全域性變數:乙個是 sdl_window 變數,另乙個是 sdl_renderer 變數。前者是sdl2視窗物件,後者是sdl2渲染器物件。

sdl_window* g_pwindow = 0;

sdl_renderer* g_prenderer = 0;

3.現在,可以初始化sdl2庫:sdl_init(sdl_init_everything)。引數 sdl_init_everything 是代表初始化全部子系統,當然,可以選擇用到的那些子系統進行初始化。

4.接下來,就是建立sdl2的視窗,使用 sdl_createwindow 函式。

g_pwindow = sdl_createwindow("chapter 1: setting up sdl", sdl_windowpos_centered, sdl_windowpos_centered, 640, 480,sdl_window_shown);
5.假如sdl2的視窗建立成功,就將在其上面建立sdl2渲染器,呼叫 sdl_createrenderer 函式。

// if the window creation succeeded create our renderer

if(g_pwindow != 0)

else

6.假如sdl2渲染器建立成功,就可以在該視窗上使用該渲染器進行繪圖等操作。

// everything succeeded lets draw the window

// set to black

sdl_setrenderdrawcolor(g_prenderer, 0, 0, 0, 255);

// clear the window to black

sdl_renderclear(g_prenderer);

// show the window

sdl_renderpresent(g_prenderer);

7.最後就是釋放資源,反初始化。

sdl_quit();
flag

initialized subsystem(s)

sdl_init_haptic

force feedback subsystem

sdl_init_audio

audio subsystem

sdl_init_video

video subsystem

sdl_init_timer

timer subsystem

sdl_init_joystick

joystick subsystem

sdl_init_everything

all subsystems

sdl_init_noparachute

don』t catch fatal signals

可以使用(|)符號來初始化多個子系統。如:

sdl_init(sdl_init_audio | sdl_init_video);
可以用sdl_wasinit()函式來檢查某個子系統是否初始化完成。如:

if(sdl_wasinit(sdl_init_video) != 0)

當初始化乙個sdl_renderer標識的時候,可以改變渲染器的渲染行為。

flag

purpose

sdl_renderer_software

use software rendering

sdl_renderer_accelerated

use hardware acceleration

sdl_renderer_presentvsync

synchronize renderer update with screen』s refresh rate

sdl_renderer_targettexture

supports render to texture

sdl_createwindow函式的最後乙個引數是表明sdl視窗的行為。

flag

purpose

sdl_window_fullscreen

make the window fullscreen

sdl_window_opengl

window can be used with as an opengl context

sdl_window_shown

the window is visible

sdl_window_hidden

hide the window

sdl_window_borderless

no border on the window

sdl_window_resizable

enable resizing of the window

sdl_window_minimized

minimize the window

sdl_window_maximized

maximize the window

sdl_window_input_grabbed

window has grabbed input focus

sdl_window_input_focus

window has input focus

sdl_window_mouse_focus

window has mouse focus

sdl_window_foreign

the window was not created using sdl

遊戲的基本流程在於中間那三個步驟:獲取輸入、物理計算、渲染輸出。然後以固定每秒迴圈n次執行,這也是遊戲的幀數本質所在。當然,由於每乙個步驟執行也是需要時間的,為了穩定幀數,還得做一些其他的操作。

第一章 的基本認識

第一章 的基本認識 動態網製作指南 knowsky.關 於 的 概 論 是 cascading style sheets 的簡稱,中文翻為 串接樣式表 也有人只翻為 樣式表 用以作為網頁的排版與風格設計,在所謂的 新式網頁 裡 不容置疑是相當重要的一環。是以既有的基礎,用以彌補既存 規格裡的不足,也...

C 初步認識 第一章

剛開始學c 試著總結。以上是我自己敲的乙個小例子。iosstream是由istream 輸入類 和ostream 輸出類 派生,所以在iostream中就有了輸入和輸出的相關物件。其中,cin和cout呢,相當於c語言中的printf,scanf,輸入和輸出函式。cin,表示標準輸入 standar...

第一章 C 基本認識

1.使用visual studio時讓程式暫停,在return前加上這個 charresponse std cin response 2.c 程式開發流程 3.變數名的命名,字母 數字 下劃線,首字母不能是數字。4.c 中型別比較靈活 確切的長度取決於實現 假設要將程式從int為16位的系統移到in...