SDL在VS编译环境下的使用
- 创建一个VS项目
- 将下载的sdl库include和lib文件夹放到项目工程下
添加附加包含目录路径
添加依赖路径
1. 项目创建
#include <iostream>
/* SDL项目基本使用 */
// 1. 在cpp文件中调用C函数包含头文件时需要用extern "C"包一下
extern "C"
{
#include <SDL.h>
}
// 2. 包含静态库文件(或者直接在项目属性中添加 链接器 -> 输入 -> 附加依赖项)
#pragma comment(lib, "x86/SDL2.lib")
// 3. 将SDL中的main函数解除定义,从而识别自己写的main函数
#undef main
// 4. 将dll文件放到可执行程序同级目录下
int main()
{
int nRet = SDL_Init(SDL_INIT_VIDEO); // 初始化SDL
if (nRet == -1) return -1; // 初始化失败
SDL_Delay(1000); // 延时一秒
SDL_Quit(); // 退出
return 0;
}
2. 绘制矩形
#include <iostream>
/* 绘制矩形 */
extern "C"
{
#include <SDL.h>
}
#pragma comment(lib, "SDL2.lib")
#undef main
int main()
{
// 1. 初始化
int nRet = SDL_Init(SDL_INIT_EVERYTHING);
if (nRet < 0)
{
std::cout << "SDL Error: " << SDL_GetError() << std::endl;
return -1;
}
// 2. 创建窗口
SDL_Window* pWnd = SDL_CreateWindow("title",
SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, // 默认屏幕中间位置
640, 480, // 宽高
SDL_WINDOW_SHOWN); // 窗口显示方式
if (NULL == pWnd)
{
std::cout << "SDL Error: " << SDL_GetError() << std::endl;
return -1;
}
// 3. 获取窗口的表面(画布)
SDL_Surface* pSurface = SDL_GetWindowSurface(pWnd);
if (NULL == pSurface)
{
std::cout << "SDL Error: " << SDL_GetError() << std::endl;
return -1;
}
// 4. 绘图
SDL_Rect rect = { 100, 100, 50, 50 };
SDL_FillRect(pSurface, &rect, SDL_MapRGB(pSurface->format, 255, 0, 0));
// 5. 更新画布
SDL_UpdateWindowSurface(pWnd);
SDL_Delay(3000); // 延时
// 6. 释放窗口资源,退出
if (pWnd)
{
SDL_DestroyWindow(pWnd);
}
SDL_Quit();
return 0;
}