學習SDL,看官方的例子很多,網上其他的人例子總有一點殘缺,學習成本較高,比如顯示窗口就單純的顯示窗口,如果你把消息循環也放進去,理解起來程序並不複雜,而且瞬間就提高了一個檔次。
#include "SDL.h"
#include <iostream>
#pragma comment(lib, "./SDL2.0.4/lib/x86/SDL2.lib")
int _tmain(int argc, _TCHAR* argv[])
{
SDL_Window *pWindow = nullptr;
SDL_Renderer*pRenderer = nullptr;
if (SDL_Init(SDL_INIT_EVERYTHING) < 0)
{
std::cout << "SDL initialize fail: " << SDL_GetError() << std::endl;
return -1;
}
pWindow = SDL_CreateWindow("SDL", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED,
640, 480,
SDL_WINDOW_SHOWN);
if (NULL == pWindow)
{
std::cout << "Create window fail : " << SDL_GetError() << std::endl;
}
pRenderer = SDL_CreateRenderer(pWindow, -1, 0);
SDL_SetRenderDrawColor(pRenderer, 0, 0xaa, 0xaa, 0xaa);
SDL_RenderClear(pRenderer);
SDL_RenderPresent(pRenderer);
//消息循環
SDL_Event sldEvent;
bool bQuit = false;
while (!bQuit)
{
while (SDL_PollEvent(&sldEvent))
{
switch (sldEvent.type)
{
case SDL_QUIT:
bQuit = true;
break;
}
}
}
return 0;
}
SDL不但做了視頻渲染,還添加了事件循環,不錯。
本例子基於 SDL2.0.4 + VS2013
git源碼下載:https://github.com/Qyee/SDL-window