SDL2使用简介

这篇博客介绍了在Windows环境下使用SDL2进行游戏开发的基础步骤,包括Visual Studio、Code::Blocks、Dev-Cpp和CMake的环境配置。内容涵盖SDL2库的初始化、窗口创建、绘制矩形、屏幕刷新、键盘输入处理以及图片加载。同时,提供了一个简单的实例,演示了如何根据WASD键控制矩形移动,并响应窗口关闭事件。
摘要由CSDN通过智能技术生成

转自我的Gitee项目

SDL2使用简介

开发环境搭建

Windows

Visual Studio

VS2019+SDL2.0环境准备

Code::Blocks

Code::Blocks如何植入SDL2

Dev-Cpp

Dev-Cpp开发环境配置SDL库

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值