SDL2使用简介
SDL2使用简介
开发环境搭建
Windows
Visual Studio
Code::Blocks
Dev-Cpp
CMake(CLion)
本条需要预先安装CMake
下载SDL2源代码
在源代码目录下输入指令
cmake -S . -B build
cmake --build build --target install
然后在项目的CMakeLists.txt下的add_executable(xxx ...)
命令之后加入target_link_libraries(xxx SDL2::SDL2 SDL2::SDL2main)
add_executable(YourProjectName main.cpp)
target_link_libraries(YourProjectName SDL2::SDL2 SDL2::SDL2main)
问题总结
Q : undefined reference to “xxxx” ?
A : 请统一使用i686(32位)的头文件和库,目前还没有找到用x86_64(64位)头文件和库的方法
SDL2库使用介绍
首先包含SDL2头(先要搭建好环境)
#include <SDL.h>
或
#include <SDL2/SDL.h>
然后按格式创建main函数(很关键,不然SDL2找不到)
int main(int argc, char** argv) {
return 0;
}
初始化
SDL初始化需要调用SDL_Init(unsigned int flag)
函数。该函数接收一个参数用于表示初始化哪些模块,这里直接填入SDL_INIT_EVERYTHING
这一flag初始化所有模块。
当初始化成功时函数返回0。因此在main函数中,使用如下代码完成初始化。
int main(int argc, char** argv) {
if (SDL_Init(SDL_INIT_EVERYTHING) != 0) {
return -1;
}
return 0;
}
PS:如果在此处报错,那就是环境搭建仍有问题
创建窗口
使用SDL_CreateWindow(const char* title, int x, int y, int w, int h, unsigned int flag)
来取得一个SDL_Window*(这是表示一个窗口的变量)未来将通过一系列函数操作这个变量。
其中
- title: 窗口名。
- x, y: 窗口位置,用SDL_WINDOWPOS_UNDEFINED来表示不预定位置。
- w, h: 窗口的长(width)宽(height),这里就直接写800, 600了。
- flag: 窗口创建的一些flag,这里直接填入SDL_WINDOW_SHOWN。
在程序执行完毕后,使用SDL_DestroyWindow(SDL_Window* window)
来销毁一个窗口。
int main(int argc, char** argv) {
SDL_Window* window = NULL;
if (SDL_Init(SDL_INIT_EVERYTHING) != 0) {
return -1;
}
window = SDL_CreateWindow("Your Window Title", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, 800, 600, SDL_WINDOW_SHOWN);
SDL_DestroyWindow(window);
return 0;
}
这时候编译运行应该会闪一个黑框,可以在销毁窗口前调用SDL_Delay(2000)
来使窗口持续显示(阻塞线程)2000毫秒。
int main(int argc, char