SDL筆記 I

SDL的圖示

前言

引用維基百科的介紹:

SDL(Simple DirectMedia Layer)是一套開放原始碼的跨平台多媒體開發函式庫,使用C語言寫成。
SDL提供了數種控制圖像、聲音、輸出入的函式,讓開發者只要用相同或是相似的程式碼就可以開發出跨多個平台(Linux、Windows、Mac OS X等)的應用軟體。
目前SDL多用於開發遊戲、模擬器、媒體播放器等多媒體應用領域。

個人會選用SDL有幾個核心的原因/目的

  • 跨平臺
  • 只需要會C/C++語言
  • 可以把開發重心放在架構,而不用費心於電腦繪圖的瑣碎細節

跨平臺

SDL原生支援Windows, Mac OS, Linux, iOS, Android等作業系統,幾乎是橫跨當今熱門平臺

程式語言

SDL由C寫成,也能在C++環境下運作,門檻不高

開發重心

如果玩過OpenGL,就會知道電腦繪圖( Computer Graphic )是一件非常複雜的程序
而SDL將這些程序簡化成相當直覺,可以拋開電腦繪圖的東西,專注於遊戲的開發練習上

可能有人會好奇SDL可以作出怎樣的東西,可以到它的官方網站上查看
爲數不少的獨立遊戲開發者都使用SDL作爲基礎架構來開發

環境架設

這裏我只能介紹Linux下的環境架設,Windows跟MacOS可以參考這裏

SDL目前有1.2跟2.0兩種版本,2.0增加了多視窗以及多螢幕等支援,建議使用2.0版本進行開發

  • 首先先到官網下載原始碼
  • 然後在shell下進到剛下載的資料夾,執行./configure make sudo make install sudo ldfonfig

最簡單的範例

main.c
#include <stdio>
#include <SDL2/SD2.h>

int
main ( int argc, char* argv )
{
  //SDL的視窗指標
  SDL_Window* mainWindow = NULL;
  
  //SDL的初始化,
  SDL_Init( SDL_INIT_EVERYTHING );
  
  //指派指標給mainWindow,同時設定這個視窗的相關資料
  mainWindow = SDL_CreateWindow(
    test, //這個視窗顯示的標題
    SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, //視窗出現的位置,這裏設爲螢幕的中心
    500, 500,  //視窗的寬跟高
    SDL_WINDOW_SHOWN  //該函數的flag,表示顯示這個視窗
     )

    //叫SDL等等,單位是毫秒
 SDL_Delay( 3000 );

    //離開SDL
 SDL_Quit();

    return 1;
}

然後編譯,gcc main.c -lSDL2 -lSDL2main -o sdl
執行,./sdl,應該就能看見一個畫面跳出來,三秒後再自動消失,就是成功啦!

一個空白的視窗

註:編譯時需要加入 lSDL2lSDL2main 這兩個參考,否則會編譯失敗

解說

這裏我們做的事情很簡單

  • 首先做了一個SDL用的視窗指標,但是還沒設定
  • 初始SDL,這裏我們初始了所有的東西,包含音效,畫面等等
  • 分配一個500X500的視窗給mainWindow,並且顯示這個視窗
  • 讓SDL停止3秒
  • 離開SDL
  • 結束程式

這就是SDL程式的基本架構,未來還會介紹更多SDL的物件,讓我們的視窗豐富起來

參考

Lazy Foo's Productions - 基本上我都是在這裏學習相關內容
SDL2.0 Wiki - 對於任何SDL函數或是參數有問題,這裏都有解

Comments

comments powered by Disqus