#include<SDL.h>
0. 注意:在 c++ 或者 c 里见到 const char * 类型 、立刻反应到这是一个字符串、可以用 "hello world"之类的串进行赋值
1 SDL_Window 结构
表示窗口。 通过SDL_CreateWindow()进行创建
2 SDL_CreateWindow()--> SDL_Window*
注意到注释里写的玩意:

title就不说了 x、y 是窗口的左上角的位置(y从上往下增大)、可以用SDL_WINDOWPOS_CENTERED来指定窗口居中
flags是标志位(c++里的各种标志位都能进行或运算、表示这个窗口具有或起来的全部性质)
3 SDL_Init()
表示初始化哪些功能模块、如果全选可以给:SDL_INIT_EVERYTHING
4 SDL_Rect 结构
表示一个正方块、初始化方式:
1) c++风格的初始化列表:

2) 结构体本来就能用的初始化方法:
![]()
3)每个都点出来赋值

(Note: 结构体的玩法就这么多、没类那么复杂!!)
4 SDL_Surface 结构
表示一堆像素、可以理解成 2d 图片
5 SDL_FillRect()
表示给某个 surface的某个矩形区域填充某种颜色
6 SDL_UpdateWindowSurface()
表示更新window的surface内容到屏幕上
7 SDL_Event
对事件的封装、其实可以 f12 点进去看一下、发现是个联合体(意味着同一时刻只有一个字段是有效的)

8 SDL_PollEvent()
取到当前窗口的事件到事件对象中
代码与结果:
//#pragma comment(linker, "/subsystem:windows /entry:mainCRTStartup") //vs2019该语句无效 #define _CRT_SECURE_NO_WARNINGS #pragma comment(lib, "win/x86/SDL2.lib") #include<SDL.h> #include <stdio.h> //Screen dimension constants const int SCREEN_WIDTH = 640; const int SCREEN_HEIGHT = 480; int main(int argc, char* args[]) { //The window we'll be rendering to SDL_Window* window = NULL; //The surface contained by the window SDL_Surface* screenSurface = NULL; //Initialize SDL if (SDL_Init(SDL_INIT_EVERYTHING) < 0) { printf("SDL could not initialize! SDL_Error: %s\n", SDL_GetError()); } else { //Create window 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 { //Get window surface screenSurface = SDL_GetWindowSurface(window); SDL_Rect rect; rect.x = 20; rect.y = 20; rect.w = 60; rect.h = 60; //Fill the surface color SDL_FillRect(screenSurface, &rect, SDL_MapRGB(screenSurface->format, 0x0f, 0x0F, 0xFF)); //Update the surface SDL_UpdateWindowSurface(window); //Hack to get window to stay up SDL_Event e; bool quit = false; while (quit == false) { while (SDL_PollEvent(&e)) { if (e.type == SDL_QUIT) quit = true; } } } } //Destroy window SDL_DestroyWindow(window); //Quit SDL subsystems SDL_Quit(); return 0; }

参考:https://lazyfoo.net/tutorials/SDL/index.php
浙公网安备 33010602011771号