【SDL游戏编程入门第一卷】配置SDL环境

一、前言

这段时间正好使用 SDL,所以打算开一个新的系列,作为经验分享
—— SDL 游戏编程入门。

这也是 AnnihilateSword 在此站的第一个系列,文中可能有许多不足,还请多多包涵,如能斧正,那再好不过。

1. 使用工具:

  • 语言:C++
  • 编辑器:Visual Studio 2019

二、下载环境资源文件

✨官方链接

✨releases 资源

这里因为使用的是 VS2019,所以下载的是 SDL2-devel-2.26.1-VC.zip

解压后可以看到有 include 和 lib 文件夹,配置非常简单

三、创建项目

打开 VS2019,创建一个控制台空项目,我这里使用的是 64位

在解决方案目录下创建 Dependencies 文件夹用来存放 include 和 lib,将下载好的两个文件夹复制进去(include、lib)

项目设置如下


三、测试(HelloSDL)

示例代码:

/* 此源代码版权归 AnnihilateSword (2022-*)所有,未经书面许可不得转载。*/

// 使用 SDL 和 iostream
#include <SDL.h>
#include <iostream>

// 链接库
#pragma comment(lib, "SDL2.lib")
#pragma comment(lib, "SDL2main.lib")

// 屏幕尺寸常量
const int SCREEN_WIDTH = 640;
const int SCREEN_HEIGHT = 480;

int main(int argc, char* argv[])  // 必须要填写此参数,不然会出现链接错误
{
	// 定义 SDL 窗口
	SDL_Window* window = nullptr;
	// 初始化 SDL
	if (SDL_Init(SDL_INIT_VIDEO) < 0)
	{
		std::cout << "[Error]: SDL could not initialize! SDL_Error: " << SDL_GetError() << std::endl;
	}
	else
	{
		// 创建窗口
		SDL_Window* window = SDL_CreateWindow("HelloSDL", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, SCREEN_WIDTH, SCREEN_HEIGHT, SDL_WINDOW_SHOWN);
		if (window == nullptr)
		{
			std::cout << "[Error]: Window could not be created! SDL_Error: " << SDL_GetError() << std::endl;
		}
		else
		{
			// 获取窗口所包含的表面
			SDL_Surface* screenSurface = SDL_GetWindowSurface(window);

			// 将表面填充为白色
			SDL_FillRect(screenSurface, nullptr, SDL_MapRGB(screenSurface->format, 0xFF, 0xFF, 0xFF));

			// 更新表面
			SDL_UpdateWindowSurface(window);

			// 窗口循环
			SDL_Event e;
			bool quit = false;
			while (quit == false)
			{
				while (SDL_PollEvent(&e))
				{
					if (e.type == SDL_QUIT)
						quit = true;
				}
			}
		}
	}
	// 销毁窗口
	SDL_DestroyWindow(window);
	// 退出 SDL
	SDL_Quit();
	return 0;
}

注意需要将 SDL2.dll 放置可执行文件 (exe) 当前目录,或者项目当前目录,不然会报错找不到 DLL

1. 运行结果:



本节内容就到这里了,下卷会继续分享 SDL 的基本使用

The End.

posted @ 2022-12-07 15:30  AnnihilateSword  阅读(229)  评论(0编辑  收藏  举报