**廢話不說了,let's go ** 示例代碼建立一個最基本的SDL窗體。ios
#include <SDL.h> #include <iostream> using namespace std; int main(int argc, char** argv) { SDL_Window* pWindow = 0; SDL_Renderer *pRenderer = 0; bool bRunning = true; if (SDL_Init(SDL_INIT_EVERYTHING) < 0) { cerr << "SDL_Init fail" << endl; return EXIT_FAILURE; } pWindow = SDL_CreateWindow("Hello,SDL", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 640, 480, SDL_WINDOW_SHOWN); if (pWindow != nullptr) { pRenderer = SDL_CreateRenderer(pWindow, -1, 0); } else return EXIT_FAILURE; SDL_SetRenderDrawColor(pRenderer, 0, 0, 0, 255); SDL_Event event; while (bRunning) { if (SDL_PollEvent(&event)) { switch (event.type) { case SDL_QUIT: bRunning = false; break; default: break; } } SDL_RenderClear(pRenderer); SDL_RenderPresent(pRenderer); } SDL_DestroyWindow(pWindow); SDL_DestroyRenderer(pRenderer); SDL_Quit(); return 0; }
int SDL_Init(Uint32 flags)
SDL_Init(SDL_INIT_VIDEO|SDL_INIT_AUDIO);
另外也能夠使用SDL_WasInit 來檢查子系統是否初始化成功。框架
SDL_Renderer* SDL_CreateRenderer(SDL_Window* window, int index, Uint32 flags)
index 能夠理解爲當前的支援渲染的顯卡索引, 賦值爲-1 使用第一個顯卡函數
flags 有如下3個可供選擇學習
SDL_RENDERER_SOFTWAREui
SDL_RENDERER_ACCELERATEDspa
SDL_RENDERER_PRESENTVSYNCcode
SDL_RENDERER_TARGETTEXTURE索引
SDL_Window ,SDL_Renderer 能夠使用SDL_DestroyWindow(),SDL_DestroyRenderer()銷燬圖片
SDL_Event 循環it
渲染和繪製操做一般獨立到單獨的函數中,如
void draw (SDL_Renderder*) { //draw something... } void render( ) { SDL_RenderClear(pRenderer); draw(pRenderer); SDL_RenderPresent(pRenderer); }
本文參考Shaun Mitchell 《SDL Game Development》