文章分类 - SDL 游戏编程入门
C++
摘要:一、前言 在 SDL2 中,常用的有两种方式获取时间和控制帧率 1. SDL_GetTicks64() 2. SDL_GetPerformanceCounter() 和 SDL_GetPerformanceFrequency() 二、使用 SDL_GetPerformanceCounter 示例代码
阅读全文
摘要:一、前言 到目前为止,我们只处理视频和输入。大多数制作的游戏都需要某种声音,在这里我们将使用 SDL_mixer 为我们播放音频。 ✨官网链接 ✨参考文档 下载方式和之前一样 本卷使用资源 🚀点击下载 二、使用 SDL_mixer 播放音乐和音效 // Init if (SDL_Init(SDL_
阅读全文
摘要:一、前言 本卷介绍 SDL 提供的计时功能 二、添加计时器 // 计时器 SDL_TimerID id = SDL_AddTimer(1000, [](Uint32 interval, void* param) { std::cout << "SDL_Timer: passed 1 second!"
阅读全文
摘要:一、前言 从本卷开始,代码做了一定的简化,去掉了不必要的封装,尽量每个模块以讲述功能为主,让示例更加浅显易懂 本卷介绍使用 SDL_ttf 输出中文,以及如何设置中文标题。 二、SDL_ttf 输出中文 本卷使用的中文字体是微软自带的黑体 simhei.ttf // 【这里设置 utf-8 字符集】
阅读全文
摘要:一、前言 与按键一样,SDL 具有事件结构来处理鼠标事件,如鼠标运动、鼠标 按钮按下,鼠标按钮释放。 二、鼠标事件 在上一卷的基础上添加一些代码即可 int main(int argc, char* argv[]) // 必须要填写此参数,不然会出现链接错误 { // 初始化 SDL if (Ini
阅读全文
摘要:一、前言 使用 SDL 呈现文本的一种方法是使用扩展库 SDL_ttf。 SDL_ttf 允许您从 TrueType 字体创建图像,我们将在此处使用这些字体来创建纹理 从字体文本。 ✨扩展库连接 ✨下载 配置方式跟之前讲解 SDL 和 SDL_image 库的配置基本类似 ✨官方文档 二、使用 SD
阅读全文
摘要:一、前言 SDL 2 的硬件加速纹理渲染还使我们能够进行快速的图像翻转和旋转。 本卷,我们将使用它来制作箭头 纹理旋转和翻转。 使用资源 二、旋转和翻转纹理 在这里,我们将向纹理类添加更多功能。渲染函数现在添加了旋转角度,指向某点旋转纹理,然后最后是 SDL 翻转枚举。 与剪切矩形一样,我们为参数提
阅读全文
摘要:一、前言 简而言之,动画只是显示一个又一个图像以创造运动的错觉。 在这里,我们将展示使用不同的精灵表片段来制作简单的动画。 // 创建窗口渲染器,设置硬件加速和垂直同步 gRenderer = SDL_CreateRenderer(gWindow, -1, SDL_RENDERER_ACCELERA
阅读全文
摘要:一、前言 这一节比较简单,介绍一下如何设置纹理颜色和透明度 主要使用两个函数,可以去官网文档看看,应该很好使用,这里也给出例子 SDL_SetTextureColorMod ✨参考链接 SDL_SetTextureAlphaMod ✨参考链接 二、设置纹理颜色和透明度 本卷使用纹理资源 本卷在上一卷
阅读全文
摘要:一、前言 有时您只想渲染纹理的一部分。很多时候,游戏喜欢将多个图像保留在同一个精灵表上,而不是拥有一堆 纹理。使用剪辑渲染,我们可以定义要渲染的纹理的一部分,而不是渲染整个东西。 二、纹理类 // 纹理类 class Texture { private: int m_Width; int m_Hei
阅读全文
摘要:一、前言 在屏幕上渲染多个图像时,通常需要具有透明背景的图像。幸运的是,SDL 提供了一种简单的方法来执行此操作: 颜色键控。其实现在这种用的少,纹理也能自动处理 PNG 的透明部分,不过作为基础知识,可以了解一下 二、使用颜色键控 (Color Keying) 本卷使用纹理资源 /** * @br
阅读全文
摘要:一、前言 SDL2.0 还允许使用视口控制在屏幕上的渲染位置,我们可以使用视口来创建子屏幕。 有时,您只想为小地图之类的内容渲染屏幕的一部分。使用视口,您可以控制在屏幕上的渲染位置。 二、使用视口 // rendering // 设置渲染器绘制颜色(黑色) SDL_SetRenderDrawColo
阅读全文
摘要:一、前言 除了新的纹理 API,SDL 还在其渲染 API 中提供了新的基元渲染调用。 因此,如果您需要渲染一些基本形状,并且不想为它们创建其他图形,SDL 可以为您节省精力。 // 加载媒体资源,这里不加载媒体资源 //if (!LoadMedia()) // std::cout << "[Err
阅读全文
摘要:一、前言 最初我们使用的是 SDL_Surface 进行绘图的,这个其实是 SDL1 主要使用的,之后因为各种原因到 SDL2 的时候,就用的不太多了,但还是要了解,有些需求还是需要使用这个进行绘图的 SDL2 的一个主要新增功能是纹理渲染 API。提供了快速、灵活的基于硬件的渲染。 当我们处理需要
阅读全文
摘要:一、前言 在这里,我们先介绍优化加载表面,然后将使用 SDL_image 扩展库来加载 png 图像。 二、优化加载表面 1. 问题 加载位图时,它通常以 24 位格式加载,因为大多数位图都是 24 位。默认情况下,大多数(如果不是全部)现代显示器不是 24 位。如果我们对图像进行 位块传输 这是
阅读全文
摘要:一、SDL事件系统介绍 我们之前在代码中有声明 SDL_Event 类型的变量用来接收事件 事件可以是 按键事件、鼠标事件、摇杆事件、窗口事件等 我们最开始使用的事件是 SDL_QUIT,该事件在用户点击窗口关闭按钮时触发 1. 事件队列 在主循环的顶部,我们有事件循环。这样做的目的是继续处理事件队
阅读全文
摘要:一、前言 本节介绍如何加载 BMP 图片,并且实现缩放效果 然后代码在上一小节的基础上稍微封装了一下,但是考虑到并不是真正的项目,所以并不会弄的太复杂,我们还是以解释每个功能以及效果的实现为主 二、加载 BMP 图片 使用函数:SDL_Surface* SDL_LoadBMP(const char*
阅读全文
摘要:一、前言 之前我们已经设置了 SDL,是时候制作一个在屏幕上呈现四边形的 SDL 图形应用程序了。 二、第一个 SDL 窗口 我们在上一卷的基础上编写,我会对重要的地方做出适当的解释。 // 使用 SDL 和 iostream #include <SDL.h> #include <iostream>
阅读全文
摘要:一、前言 这段时间正好使用 SDL,所以打算开一个新的系列,作为经验分享 —— SDL 游戏编程入门。 这也是 AnnihilateSword 在此站的第一个系列,文中可能有许多不足,还请多多包涵,如能斧正,那再好不过。 1. 使用工具: 语言:C++ 编辑器:Visual Studio 2019
阅读全文

浙公网安备 33010602011771号