SDL2之source code 下载安装
参考:https://blog.csdn.net/qq_31024569/article/details/77884072
https://www.libsdl.org/
下载SDL2源码
https://www.libsdl.org/projects/
下载image, rrf等源码
1.1 弹出一个窗口
完整程序:
main.cpp
#include <SDL2/SDL.h>
#include <stdio.h>
//定义屏幕尺寸常量
const int SCREEN_WIDTH = 640;
const int SCREEN_HEIGHT = 480;
int main( int argc, char* args[] )
{
//将要渲染的窗口
SDL_Window* window = NULL;
//窗口含有的surface
SDL_Surface* screenSurface = NULL;
//初始化SDL
if( SDL_Init( SDL_INIT_VIDEO ) < 0 )
{
printf( "SDL could not initialize! SDL_Error: %s\n", SDL_GetError() );
}
else
{
//创建 window
//window = SDL_CreateWindow( "SDL Tutorial", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, SCREEN_WIDTH, SCREEN_HEIGHT, SDL_WINDOW_SHOWN );
window = SDL_CreateWindow( "SDL Tutorial", 0, 0, SCREEN_WIDTH, SCREEN_HEIGHT, SDL_WINDOW_SHOWN );
if( window == NULL )
{
printf( "Window could not be created! SDL_Error: %s\n", SDL_GetError() );
}
else
{
//获取 window surface
screenSurface = SDL_GetWindowSurface( window );
//用白色填充surface
SDL_FillRect( screenSurface, NULL, SDL_MapRGB( screenSurface->format, 0xFF, 0xFF, 0xFF ) );
//更新surface
SDL_UpdateWindowSurface( window );
//延迟两秒
SDL_Delay( 2000 );
}
}
//销毁window
SDL_DestroyWindow( window );
//退出 SDL subsystems
SDL_Quit();
return 0;
}
1.2 程序解释
1) 主函数的参数一定是一个int以及char *数组(顺序不能变)且主函数的返回值必须为int。任何其他形式的主函数会导致对主函数未定义的引用(an undefined reference to main),这样的主函数才能让SDL与多个平台兼容。
2) int SDL_Init(Uint32 flags); 正常,则函数返回0,如果异常,则返回-1
3) SDL_CreatWindow()函数来创建窗口,
第一个参数设置窗口的标题或窗口的这一部分
接下来的两个参数定义了窗口生成处的x和y的坐标。因为我们暂时不用关心它创建在哪里,所以就直接使用SDL_WINDOWPOS_UNDEFINED这个预定义的常量来初始化x和y坐标
接下来的两个参数定义了窗口的宽度和高度。最后那个参数是创建标签(creation flag)。以SDL_WINDOW_SHOWN作为此参数时,表示窗口一创建即为可见的(非隐藏窗口?)
4) SDL_FillRect()函数来填充整个窗口
5) 说一下关于渲染的很重要的事,在screen surface上更改或画上一些东西并不意味着你会看到更改后的surface。只有更新(update)窗口后,它才会展示你更改之后的surface。操作完成后使用SDL_UpdateWindowSurface()这个函数就行了。
6) SDL_Delay(), 参数为毫秒
浙公网安备 33010602011771号