Simple 2D 是一個小型開源圖形引擎,提供基本的 2D 繪圖、媒體和輸入功能。它是用 C 語言編寫的,可跨多個平台工作,創建本機視窗並使用 SDL 與硬體交互,同時使用 OpenGL 渲染內容。
請注意,隨著新功能的新增、錯誤的修復以及其他變更的進行,本自述文件將不斷更新。查看發行說明以取得該版本文件的連結。
如果您遇到任何問題、有功能請求或只是想提出問題,請在 GitHub 上提出問題。了解有關以下貢獻的更多資訊。
Simple 2D 支援所有主要作業系統和硬體平台,並在 Raspberry Pi 上的 macOS、iOS、tvOS、Windows、Linux 和 Raspbian 的最新版本上進行了測試。
要安裝最新版本...
使用自製軟體:
brew tap simple2d/tap
brew install simple2d
上面的 Homebrew 公式也將預設將 iOS 和 tvOS 框架安裝到/usr/local/Frameworks/Simple2D
。安裝後,執行simple2d simulator
命令以查看與 iOS 和 tvOS 模擬器互動的可用選項。運行simple2d build
以了解如何使用 iOS 和 tvOS SDK 建立 Xcode 專案。範例 Xcode 專案可以在deps
儲存庫中找到。
下載 Visual C++ 或 MinGW 的 Windows 安裝程式。
對於 MinGW,我們建議使用 MSYS2 環境(在 Chocolatey 上也可用)以及 MinGW 64 位元命令提示字元(通常為mingw64.exe
)。 Simple 2D 也可以使用下面的 Linux 說明安裝在 MinGW 上。
執行simple2d.sh
Bash 腳本。一切都會在整個過程中得到解釋,並且在採取任何行動之前都會提示您。若要從網路執行該腳本,請將此程式碼片段貼到您的終端機中:
url= ' https://raw.githubusercontent.com/simple2d/simple2d/master/bin/simple2d.sh ' ; which curl > /dev/null && cmd= ' curl -fsSL ' || cmd= ' wget -qO - ' ; bash <( $cmd $url ) install
Simple 2D 支援運行 Linux 的 ARM 平台,例如 Raspberry Pi。由於大多數Linux 發行版都為傳統桌面平台配置了SDL 軟體包,因此當偵測到ARM 時,安裝腳本將從原始碼編譯SDL,從而停用視窗系統(如X11)和OpenGL(改為強制使用OpenGL ES )。
安裝後,使用simple2d
命令列公用程式來更新 Simple 2D、檢查問題、輸出編譯應用程式所需的函式庫等。只需執行simple2d
即可查看所有可用的命令和選項。
或者,您可以從原始程式碼編譯並安裝 Simple 2D。首先使用以下命令克隆此存儲庫:
git clone --recursive https://github.com/simple2d/simple2d.git
為了保持此儲存庫的大小較小,Git 子模組用於引用測試媒體和相依性。 --recursive
標誌確保複製此儲存庫時初始化和更新子模組。如果您碰巧在沒有--recursive
標誌的情況下克隆了此儲存庫,您仍然可以使用以下命令初始化和更新子模組:
git submodule init
git submodule update --remote
使用git submodule update --remote
隨時更新這些子模組
接下來,透過執行以下命令在類別 Unix 系統(包括使用 MinGW 的 Windows)上建置和安裝:
make && make install
在使用 Visual C++ 的 Windows 上,開啟 64 位元 Visual Studio 命令提示字元並執行:
nmake /f NMakefile all install
請注意,在 macOS 和 Linux 上,makefile 不會檢查或安裝依賴項,這與分別透過 Homebrew 或simple2d.sh
腳本安裝不同。支援 Visual C++ 和 MinGW 的 Windows 依賴項包含在此儲存庫中(由deps
模組引用)並由兩個 makefile 進行安裝。
在使用 Visual C++ 的 Windows 上,Simple 2D 將安裝到%LOCALAPPDATA%simple2d
,因此請確保將其新增至您的路徑(例如使用set PATH=%PATH%;%LOCALAPPDATA%simple2d
)。在所有其他情況下,它將安裝到/usr/local/
。在使用 MinGW 的 Windows 上,請確保/usr/local/bin
也在您的路徑中。
若要建立發布檔案(隨每個版本一起下載),請使用 MinGW 在 macOS 和 Windows 上執行make release
,並使用 Visual C++ 在 Windows 上執行nmake /f NMakefile release
。
Simple 2D 有多個測試程序,以確保一切正常運作。
auto.c
— 一組公共介面的自動化單元測試。triangle.c
— 本自述文件中的「Hello Triangle」範例。testcard.c
— 圖形卡,類似於電視測試卡,目的是確保視覺效果和輸入正常運作。audio.c
— 使用解釋為聲音樣本和音樂的各種檔案格式測試音訊功能。controller.c
— 提供遊戲控制器輸入的視覺和數位回饋。triangle-ios-tvos.c
— 為 iOS 和 tvOS 裝置設計的修改後的triangle.c
。 使用 Visual C++ 在 Windows 上執行make test
或nmake /f NMakefile test
,將測試編譯到test/
目錄。產生的可執行檔將與其 C 原始檔同名。由於這些測試程式中的媒體路徑是相對設定的,因此請確保在執行測試之前cd
到test/
目錄,例如:
# On Unix-like systems
make test && cd test/ && ./testcard
# On Windows using MinGW
make test & cd test & testcard.exe
# On Windows using Visual C++
nmake /f NMakefile test & cd test & testcard.exe
每個測試還有一個 makefile 目標,因此您可以使用make test testcard
等來建置和執行測試。或者,方便地卸載所有內容,從原始程式碼重建 Simple 2D 和測試,並使用make rebuild <name_of_test>
運行測試,例如:
# Rebuild and run `auto.c` then `testcard.c`...
# ...on Unix-like systems and Windows using MinGW
make rebuild auto testcard
# ...on Windows using Visual C++
nmake /f NMakefile rebuild auto testcard
若要執行 iOS 和 tvOS 測試,請先執行make frameworks && make install-frameworks
來建置和安裝 iOS 和 tvOS 框架。接下來,運行make ios
在 iOS 模擬器中運行測試,並make tvos
在 tvOS 模擬器中運行。
製作 2D 應用程式很簡單!讓我們創建一個視窗並繪製一個三角形...
#include <simple2d.h>
void render () {
S2D_DrawTriangle (
320 , 50 , 1 , 0 , 0 , 1 ,
540 , 430 , 0 , 1 , 0 , 1 ,
100 , 430 , 0 , 0 , 1 , 1
);
}
int main () {
S2D_Window * window = S2D_CreateWindow (
"Hello Triangle" , 640 , 480 , NULL , render , 0
);
S2D_Show ( window );
return 0 ;
}
將上面的程式碼儲存到名為triangle.c
的檔案中,並透過在命令列上執行simple2d build triangle.c
來編譯它(在 MinGW 中,在 Bash 提示字元下執行它)。現在,在 macOS 和 Linux 上使用./triangle
運行該應用程序,或在 Windows 上使用triangle.exe
運行該應用程序,並在 640x480 窗口中以每秒 60 幀的速度欣賞令人驚嘆的三角形!
simple2d build
命令是編譯單一原始檔的有用捷徑。當然,你也可以直接使用編譯器,例如在類別 Unix 系統上:
cc triangle.c ` simple2d --libs ` -o triangle
在 Windows 上,在開發人員命令提示字元中使用 Visual C++:
cl triangle.c /I %LOCALAPPDATA% s imple2d /link /LIBPATH %LOCALAPPDATA% s imple2d s imple2d.lib /SUBSYSTEM:CONSOLE
# as a PowerShell command
iex " cl triangle.c $( simple2d --libs ) "
讓我們了解 2D 繪圖等的結構化應用程式。
所有渲染的內容、輸入和聲音都由視窗控制,因此建立視窗是您要做的第一件事。首先宣告一個指向S2D_Window
結構的指針,並使用S2D_CreateWindow()
對其進行初始化。
S2D_Window * window = S2D_CreateWindow (
"Hello World!" , // title of the window
800 , 600 , // width and height
update , render , // callback function pointers (these can be NULL)
0 // flags
);
若要將視窗的寬度和高度設定為與顯示器的寬度和高度相同,請分別使用S2D_DISPLAY_WIDTH
和S2D_DISPLAY_HEIGHT
作為這些值。
視窗標誌可以是0
或以下任一項:
S2D_RESIZABLE // allow window to be resized
S2D_BORDERLESS // show window without a border
S2D_FULLSCREEN // show window at fullscreen
S2D_HIGHDPI // enable high DPI mode
也可以使用位元 OR 運算子組合標誌,例如: S2D_RESIZABLE | S2D_BORDERLESS
視窗的大小(視窗中繪製圖形的區域)可以獨立於視窗大小進行設置,如下所示:
window -> viewport . width = 400 ;
window -> viewport . height = 300 ;
視窗有多種縮放模式,例如S2D_FIXED
(視窗在視窗大小變化時保持相同大小)、 S2D_EXPAND
(調整大小時視窗擴展以填充視窗)、 S2D_SCALE
(預設值,其中視口按比例縮放並居中於視窗)視窗),或S2D_STRETCH
(視窗拉伸以填滿整個視窗)。像這樣設定模式:
window -> viewport . mode = S2D_FIXED ;
在顯示視窗之前,可以設定這些屬性:
window -> vsync = false; // set the vertical sync, true by default
window -> icon = "app.png" ; // set the icon for the window
一旦您的視窗準備就緒,請使用以下命令顯示它:
S2D_Show ( window );
在顯示視窗之前或期間的任何時間,都可以設定這些屬性:
// Cap the frame rate, 60 frames per second by default
window -> fps_cap = 30 ;
// Set the window background color, black by default
window -> background . r = 1.0 ;
window -> background . g = 0.5 ;
window -> background . b = 0.8 ;
window -> background . a = 1.0 ;
回調函數也可以隨時變更 - 下面將詳細介紹。可以從S2D_Window
結構體中讀取許多值,詳細資訊請參考simple2d.h
頭檔。
可以使用以下命令更改視窗圖示:
S2D_SetIcon ( window , "new_icon.png" );
以 PNG 格式截取視窗的螢幕截圖,並提供檔案路徑:
S2D_Screenshot ( window , "./screenshot.png" );
使用完視窗後,使用以下命令釋放它:
S2D_FreeWindow ( window );
視窗循環是所有操作發生的地方:設定幀速率、處理輸入、更新應用程式狀態以及渲染視覺效果。您需要宣告兩個將由視窗循環呼叫的基本函數: update()
和render()
。與傳統的遊戲循環一樣, update()
用於更新應用程式狀態, render()
用於繪製場景。 Simple 2D 優化了這兩個函數的效能和準確性,因此最好將這些更新和渲染任務分開。
更新和渲染函數應如下所示:
void update () { /* update your application state */ }
void render () { /* draw stuff */ }
請記住在呼叫S2D_CreateWindow()
時加入這些函數名稱(有關範例,請參閱上面的「視窗」部分)。
若要隨時退出視窗循環,請使用:
S2D_Close ( window );
可以在視窗中繪製各種形狀和紋理。下面詳細了解它們。
有多種幾何形狀可供選擇,例如三角形、四邊形(可製成矩形和正方形)、直線和圓形。每個形狀都包含頂點,即兩條線相交形成角度的位置(例如,三角形有三個)。對於三角形和四邊形的每個頂點,需要設定六個值: x
和y
座標以及四個顏色值。線條有兩個頂點,但可以設定每個角落的顏色。圓有一個中心點和可以設定的顏色。當頂點具有不同的顏色值時,它們之間的空間會以漸變的形式混合。
以下範例的簡寫是:
x = the x coordinate
y = the y coordinate
// Color range is from 0.0 to 1.0
r = red
g = green
b = blue
a = alpha ( opacity )
使用此表示法, x2
將是第二個x
座標, b2
將是該頂點的藍色值。
若要繪製三角形,請使用:
S2D_DrawTriangle ( x1 , y1 , r1 , g1 , b1 , a1 ,
x2 , y2 , r2 , g2 , b2 , a2 ,
x3 , y3 , r3 , g3 , b3 , a3 );
若要繪製四邊形,請使用:
S2D_DrawQuad ( x1 , y1 , r1 , g1 , b1 , a1 ,
x2 , y2 , r2 , g2 , b2 , a2 ,
x3 , y3 , r3 , g3 , b3 , a3 ,
x4 , y4 , r4 , g4 , b4 , a4 );
要畫一條線,請使用:
S2D_DrawLine ( x1 , y1 , x2 , y2 ,
width ,
r1 , g1 , b1 , a1 ,
r2 , g2 , b2 , a2 ,
r3 , g3 , b3 , a3 ,
r4 , g4 , b4 , a4 );
要繪製圓,請使用:
S2D_DrawCircle ( x , y , radius , sectors , r , g , b , a );
可以在視窗中繪製許多流行格式的圖像,例如 JPEG、PNG 和 BMP。與形狀不同,圖像需要從檔案中讀取並儲存在記憶體中。只要宣告一個指向S2D_Image
結構的指針,並使用提供影像檔案路徑的S2D_CreateImage()
對其進行初始化。
S2D_Image * img = S2D_CreateImage ( "image.png" );
如果找不到圖像,它將傳回NULL
。
獲得圖像後,您可以更改其x, y
位置,如下所示:
img -> x = 125 ;
img -> y = 350 ;
透過調整影像的寬度和高度來變更影像的大小:
img -> width = 256 ;
img -> height = 512 ;
像這樣旋轉影像:
// Angle should be in degrees
// The last parameter is the point the image should rotate around, either:
// S2D_CENTER, S2D_TOP_LEFT, S2D_TOP_RIGHT, S2D_BOTTOM_LEFT, or S2D_BOTTOM_RIGHT
S2D_RotateImage ( img , angle , S2D_CENTER );
// Or, set a custom point to rotate around
img -> rx = 50 ;
img -> ry = 75 ;
// Set the rotation angle directly
img -> rotate = 90 ;
您也可以像這樣調整影像的顏色:
// Default is 1.0 for each, a white color filter
img -> color . r = 1.0 ;
img -> color . g = 0.8 ;
img -> color . b = 0.2 ;
img -> color . a = 1.0 ;
最後,使用以下命令繪製圖像:
S2D_DrawImage ( img );
由於影像是動態分配的,因此可以使用以下方法釋放它們:
S2D_FreeImage ( img );
精靈是一種特殊類型的圖像,可用於建立動畫。要建立精靈,請宣告一個指向S2D_Sprite
結構的指針,並使用提供精靈表圖像的檔案路徑的S2D_CreateSprite()
對其進行初始化。
S2D_Sprite * spr = S2D_CreateSprite ( "sprite_sheet.png" );
如果找不到精靈圖像,它將傳回NULL
。
透過提供剪切矩形將精靈表剪切為單一圖像:
S2D_ClipSprite ( spr , x , y , width , height );
精靈本身的x, y
位置可以像這樣改變:
spr -> x = 150 ;
spr -> y = 275 ;
透過調整精靈的寬度和高度來改變精靈的大小:
spr -> width = 100 ;
spr -> height = 100 ;
像這樣旋轉精靈:
// Angle should be in degrees
// The last parameter is the point the sprite should rotate around, either:
// S2D_CENTER, S2D_TOP_LEFT, S2D_TOP_RIGHT, S2D_BOTTOM_LEFT, or S2D_BOTTOM_RIGHT
S2D_RotateSprite ( spr , angle , S2D_CENTER );
// Or, set a custom point to rotate around
spr -> rx = 50 ;
spr -> ry = 75 ;
// Set the rotation angle directly
spr -> rotate = 90 ;
您也可以像這樣調整精靈圖像的顏色:
// Default is 1.0 for each, a white color filter
spr -> color . r = 1.0 ;
spr -> color . g = 0.8 ;
spr -> color . b = 0.2 ;
spr -> color . a = 1.0 ;
最後,使用以下命令繪製精靈:
S2D_DrawSprite ( spr );
由於精靈是動態分配的,因此可以使用以下方法釋放它們:
S2D_FreeSprite ( spr );
文字的繪製方式與圖像非常相似。首先找到您最喜歡的 OpenType 字體(帶有.ttf
或.otf
檔案副檔名),然後聲明一個指向S2D_Text
結構的指針,並使用S2D_CreateText()
對其進行初始化,提供字體的文件路徑、要顯示的消息以及大小。
S2D_Text * txt = S2D_CreateText ( "vera.ttf" , "Hello world!" , 20 );
如果找不到字體文件,它將傳回NULL
。
然後您可以更改文字的x, y
位置,例如:
txt -> x = 127 ;
txt -> y = 740 ;
像這樣旋轉文字:
// Angle should be in degrees
// The last parameter is the point the text should rotate around, either:
// S2D_CENTER, S2D_TOP_LEFT, S2D_TOP_RIGHT, S2D_BOTTOM_LEFT, or S2D_BOTTOM_RIGHT
S2D_RotateText ( txt , angle , S2D_CENTER );
// Or, set a custom point to rotate around
txt -> rx = 50 ;
txt -> ry = 75 ;
// Set the rotation angle directly
txt -> rotate = 90 ;
像這樣更改文字的顏色:
// Default is 1.0 for each, a white color filter
txt -> color . r = 0.5 ;
txt -> color . g = 1.0 ;
txt -> color . b = 0.0 ;
txt -> color . a = 0.7 ;
最後,使用以下命令繪製文字:
S2D_DrawText ( txt );
您也可以隨時變更簡訊:
S2D_SetText ( txt , "A different message!" );
// Format text just like `printf`
S2D_SetText ( txt , "Welcome %s!" , player );
由於文字是動態分配的,因此可以使用以下方法釋放它們:
S2D_FreeText ( txt );
Simple 2D 支援多種流行的音訊格式,包括 WAV、MP3、Ogg Vorbis 和 FLAC。音頻概念有兩種:聲音和音樂。聲音是簡短的樣本,不間斷地播放,就像效果一樣。音樂適用於較長的片段,可以播放、暫停、停止、恢復和淡出,就像背景配樂一樣。
首先宣告一個指向S2D_Sound
結構的指標來建立聲音,並使用提供音訊檔案路徑的S2D_CreateSound()
對其進行初始化。
S2D_Sound * snd = S2D_CreateSound ( "sound.wav" );
如果找不到音訊文件,它將返回NULL
。
像這樣播放聲音:
S2D_PlaySound ( snd );
您可以像這樣取得和設定聲音的音量:
int volume = S2D_GetSoundVolume ( snd );
S2D_SetSoundVolume ( snd , 50 ); // set volume 50%
此外,取得並設定所有聲音的音量,如下所示,其中音量範圍介於 0(最輕)和 100(最響亮)之間:
int volume = S2D_GetSoundMixVolume ();
S2D_SetSoundMixVolume ( 50 ); // set volume 50%
由於聲音是動態分配的,因此可以使用以下方法釋放它們:
S2D_FreeSound ( snd );
同樣,透過聲明指向S2D_Music
結構的指標來創建一些音樂,並使用提供音訊檔案路徑的S2D_CreateMusic()
對其進行初始化。
S2D_Music * mus = S2D_CreateMusic ( "music.ogg" );
如果找不到音訊文件,它將返回NULL
。
像這樣播放音樂,其中第二個參數是一個布林值,指示音樂是否應該重複:
S2D_PlayMusic ( mus , true); // play on a loop
一次只能播放一首音樂。以下用於暫停、恢復、獲取和設定音量、停止和淡出的函數適用於目前正在播放的任何音樂:
S2D_PauseMusic ();
S2D_ResumeMusic ();
S2D_StopMusic ();
int volume = S2D_GetMusicVolume ();
S2D_SetMusicVolume ( 50 ); // set volume 50%
// Fade out over 2000 milliseconds, or 2 seconds
S2D_FadeOutMusic ( 2000 );
由於音樂是動態分配的,因此可以使用以下方法釋放它們:
S2D_FreeMusic ( mus );
簡單的 2D 可以捕捉幾乎任何事物的輸入。讓我們學習如何從滑鼠、鍵盤和遊戲控制器取得輸入事件。
視窗捕捉三種類型的鍵盤事件:按下某個鍵、按住某個鍵、釋放某個按鍵。當鍵盤事件發生時,視窗呼叫其on_key()
函數。
要捕獲鍵盤輸入,首先定義on_key()
函數並從S2D_Event
結構中讀取事件詳細信息,例如:
void on_key ( S2D_Event e ) {
// Check `e.key` for the key being interacted with
switch ( e . type ) {
case S2D_KEY_DOWN :
// Key was pressed
break ;
case S2D_KEY_HELD :
// Key is being held down
break ;
case S2D_KEY_UP :
// Key was released
break ;
}
}
然後,將回調附加到視窗:
window -> on_key = on_key ;
可以隨時從視窗讀取滑鼠或觸控板的遊標位置。請注意,左上角是原點(0, 0)
。
window -> mouse . x ;
window -> mouse . y ;
要捕獲滑鼠按鈕輸入,首先定義on_mouse()
函數並從S2D_Event
結構中讀取事件詳細信息,例如:
// `e.button` can be one of:
// S2D_MOUSE_LEFT
// S2D_MOUSE_MIDDLE
// S2D_MOUSE_RIGHT
// S2D_MOUSE_X1
// S2D_MOUSE_X2
void on_mouse ( S2D_Event e ) {
switch ( e . type ) {
case S2D_MOUSE_DOWN :
// Mouse button was pressed
// Use `e.button` to see what button was clicked
// Check `e.dblclick` to see if was a double click
break ;
case S2D_MOUSE_UP :
// Mouse button was released
// Use `e.button` to see what button was clicked
// Check `e.dblclick` to see if was a double click
break ;
case S2D_MOUSE_SCROLL :
// Mouse was scrolled
// Check `e.direction` for direction being scrolled, normal or inverted:
// S2D_MOUSE_SCROLL_NORMAL
// S2D_MOUSE_SCROLL_INVERTED
// Check `e.delta_x` and `e.delta_y` for the difference in x and y position
break ;
case S2D_MOUSE_MOVE :
// Mouse was moved
// Check `e.delta_x` and `e.delta_y` for the difference in x and y position
break ;
}
}
然後,將回調附加到視窗:
window -> on_mouse = on_mouse ;
使用以下命令隱藏視窗上的遊標(並再次顯示):
S2D_HideCursor ();
S2D_ShowCursor ();
所有遊戲控制器都會自動偵測、新增和刪除。視窗捕捉兩種類型的事件:軸運動和按鈕按下。當按下按鈕或移動操縱桿時,視窗呼叫其on_controller()
函數。按鈕和軸對應到通用 Xbox 控制器佈局。
要捕獲控制器輸入,首先定義on_controller()
函數並從S2D_Event
結構中讀取事件詳細信息,例如:
void on_controller ( S2D_Event e ) {
// Check `e.which` for the controller being interacted with
switch ( e . type ) {
case S2D_AXIS :
// Controller axis was moved
// Use `e.axis` to get the axis, either:
// S2D_AXIS_LEFTX, S2D_AXIS_LEFTY,
// S2D_AXIS_RIGHTX, S2D_AXIS_RIGHTY,
// S2D_AXIS_TRIGGERLEFT, S2D_AXIS_TRIGGERRIGHT,
// or S2D_AXIS_INVALID
// Use `e.value` to get the value of the axis
break ;
// For the following button events, use `e.button`
// to get the button pressed or released, which can be:
// S2D_BUTTON_A, S2D_BUTTON_B, S2D_BUTTON_X, S2D_BUTTON_Y,
// S2D_BUTTON_BACK, S2D_BUTTON_GUIDE, S2D_BUTTON_START,
// S2D_BUTTON_LEFTSTICK, S2D_BUTTON_RIGHTSTICK,
// S2D_BUTTON_LEFTSHOULDER, S2D_BUTTON_RIGHTSHOULDER,
// S2D_BUTTON_DPAD_UP, S2D_BUTTON_DPAD_DOWN,
// S2D_BUTTON_DPAD_LEFT, S2D_BUTTON_DPAD_RIGHT,
// or S2D_BUTTON_INVALID
case S2D_BUTTON_DOWN :
// Controller button was pressed
break ;
case S2D_BUTTON_UP :
// Controller button was released
break ;
}
}
然後,將回調附加到視窗:
window -> on_controller = on_controller ;
有關如何與遊戲控制器互動的詳細範例,請參閱controller.c
測試。
您肯定會找到還沒有按鈕映射的控制器,特別是如果它們是全新的。有關如何產生映射字串的範例,請參閱社群來源的控制器映射資料庫。取得映射字串後,您可以使用S2D_AddControllerMapping()
註冊它,或使用S2D_AddControllerMappingsFromFile()
從檔案新增多個映射並提供檔案路徑。
“簡單可能比複雜更難:你必須努力理清思路,使其變得簡單。但最終這是值得的,因為一旦你做到了這一點,你就可以移山。” — 史蒂夫‧賈伯斯
儘管電腦圖形硬體和軟體不斷進步,但簡單的圖形程式設計入門並不是那麼容易或容易實現。我們正在努力改變這一點。
如果您喜歡該項目,請考慮貢獻!查看未解決的問題以獲取想法,或提出您自己的建議。我們一直在尋找使專案更具吸引力並改善每個平台上的開發人員體驗的方法。如果您不是 C 或圖形 API 的專家,請不要擔心 — 我們很樂意引導您完成這一切。
如果您是鐵桿 C 和作業系統駭客,您應該認真考慮為 SDL 做出貢獻,這樣我們就可以繼續編寫遊戲,而不必擔心下面的平台細節。查看 Steam 開發日的演講,尤其是 Ryan C. Gordon 關於使用 SDL 2.0 進行遊戲開發的演講。
simple2d.sh
中的 SDL 版本deps
儲存庫進行任何更新(按照自述文件中的說明進行操作),並在此儲存庫中執行git submodule update --remote
來更新子模組simple2d.sh
和simple2d.cmd
中的 Simple 2D 版本號,提交更改release
make/nmake 目標建立 Windows 安裝程式(適用於 Visual C++ 和 MinGW)和 Apple 程式庫v#.#.#
;將 Windows 安裝程式和 Apple 庫附加到發行說明中shasum -a 256 <file>
計算版本和框架存檔的新sha256
校驗和brew audit --strict ./simple2d.rb
來檢測公式的任何問題brew install ./simple2d.rb
測試公式的安裝Simple 2D 是由 Tom Black 創建的,他認為簡單的圖形編程太困難,並決定對此做點什麼。
一切都是麻省理工學院許可的,所以破解吧。
享受!