SDL官網:https://www.libsdl.org/
SDL2.0文檔地址:http://wiki.libsdl.org/Introduction
簡介
直接翻譯了一下官網介紹:
簡單的DirectMedia Layer是一個跨平臺開發庫,旨在通過OpenGL和Direct3D提供對音頻,鍵盤,鼠標,操縱桿和圖形硬件的低層訪問。 它被視頻播放軟件,模擬器和流行遊戲使用,包括Valve屢獲殊榮的目錄和許多Humble Bundle遊戲。
SDL正式支持Windows,Mac OS X,Linux,iOS和Android。 可以在源代碼中找到對其他平臺的支持。
SDL是用C語言編寫的,與C ++本身一起工作,並且有幾種其他語言可用的綁定,包括C#和Python。
SDL 2.0在zlib許可下分發。 此許可證允許您在任何軟件中自由使用SDL。
SDL開發包位置
用命令:brew info sdl2
Superli-2:ffmpeg-leaning superli$ brew info sdl2
sdl2: stable 2.0.9 (bottled), HEAD
Low-level access to audio, keyboard, mouse, joystick, and graphics
https://www.libsdl.org/
/usr/local/Cellar/sdl2/2.0.9_1 (87 files, 4.5MB) *
Poured from bottle on 2019-05-02 at 19:53:15
From: https://github.com/Homebrew/homebrew-core/blob/master/Formula/sdl2.rb
==> Options
--HEAD
Install HEAD version
==> Analytics
install: 74,178 (30 days), 199,950 (90 days), 518,556 (365 days)
install_on_request: 8,650 (30 days), 23,572 (90 days), 77,346 (365 days)
build_error: 0 (30 days)
可以看到我的SDL開發包在:/usr/local/Cellar/sdl2/2.0.9_1目錄下。實際上這是Xcode自帶的,並沒有讓我手動安裝。
如果沒有安裝的同學,可以敲命令:brew install sdl2
安裝。
注意是sdl2而不是sdl,兩個版本的api向去甚遠,別怪我沒有提醒你。
Clion創建第一個SDL程序
Clion創建工程的大致流程是:Clion - > File -> New Project -> C++ Excutable -> 在location裏改一下工程目錄-> create。
修改CMakeLists.txt文件成這樣:
cmake_minimum_required(VERSION 3.10)
project(PlaySDL)
set(CMAKE_CXX_STANDARD 11)
set(SDL_DIR /usr/local/Cellar/sdl2/2.0.9_1/) # 這個SDL開發包的路徑,可以通過brew info sdl2查出來
include_directories(${SDL_DIR}/include/) # 添加SDL頭文件搜索路徑
link_libraries(${SDL_DIR}/lib/) # 增加SDL鏈接庫目錄
add_executable(PlaySDL main.cpp)
target_link_libraries(PlaySDL SDL2 SDL2_test SDL2main) # 鏈接目標庫
target_link_libraries
中包含的SDL2
、SDL2_test
、SDL2main
是SDL的共享庫,在/usr/local/Cellar/sdl2/2.0.9_1/lib/目錄下。
main.cpp文件是這樣的:
#include <iostream>
extern "C" {
#include <SDL2/SDL.h>
}
using namespace std;
const int WIDTH = 400, HEIGHT = 400; // SDL窗口的寬和高
int main() {
if (SDL_Init(SDL_INIT_EVERYTHING) < 0) { // 初始化SDL
cout << "SDL could not initialized with error: " << SDL_GetError() << endl;
}
SDL_Window *window = SDL_CreateWindow("Hello SDL world!", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, WIDTH, HEIGHT, SDL_WINDOW_ALLOW_HIGHDPI); // 創建SDL窗口
if (NULL == window) {
cout << "SDL could not create window with error: " << SDL_GetError() << endl;
}
SDL_Event windowEvent; // SDL窗口事件
while(true) {
if (SDL_PollEvent(&windowEvent)) { // 對當前待處理事件進行輪詢。
if (SDL_QUIT == windowEvent.type) { // 如果事件爲推出SDL,結束循環。
cout << "SDL quit!!" << endl;
break;
}
}
}
SDL_DestroyWindow(window); // 推出SDL窗體
SDL_Quit(); // SDL推出
return 0;
}
好了就是這麼簡單,運行看一下效果:
就是這麼醜,我們後面會讓它漂亮起來的。
最後附上工程源碼github地址:傳送門