【重学C语言】十八、SDL2 图形编程介绍和环境配置

2024-06-07 02:52

本文主要是介绍【重学C语言】十八、SDL2 图形编程介绍和环境配置,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

【重学C语言】十八、SDL2 图形编程介绍和环境配置

  • **SDL2介绍**
  • SDL 2用途
  • SDL 在哪些平台上运行?
  • 下载和安装 SDL2
    • 安装 SDL2
  • clion 配置 SDL2

SDL2介绍

SDL2(Simple DirectMedia Layer 2)是一个开源的跨平台多媒体开发库,主要用于游戏开发中的多媒体处理,如视频渲染、音频播放、鼠标/键盘控制等。它用C语言编写,支持多种平台,包括Windows、macOS、Linux、iOS和Android等。SDL2通过提供统一的接口,内部会根据不同的平台调用底层的API,大大降低了多媒体应用开发的难度。

SDL 2用途

视频

  • 3D图形:SDL 可与 OpenGL API 或 Direct3D API 结合使用,用于 3D 图形
  • 加速 2D 渲染 API:支持简单的旋转、缩放和 alpha 混合,所有这些都使用现代 3D API 加速,使用 OpenGL 和 Direct3D 支持加速
  • 创建和管理多个窗口

输入事件

  • 提供的事件和 API 函数用于:
    • 应用程序和窗口状态更改
    • 鼠标输入
    • 键盘输入
    • 操纵杆和游戏控制器输入
    • 多点触控手势
  • 可以使用SDL_EventState ()启用或禁用每个事件
  • 事件在发布到内部事件队列之前通过用户指定的过滤器函数
  • 线程安全事件队列

力反馈

  • Windows、Mac OS X 和 Linux 支持力反馈

音频

  • 设置8位和16位音频、单声道立体声或5.1环绕声的音频播放,如果硬件不支持格式,可选择转换
  • 音频在单独的线程中独立运行,通过用户回调机制填充
  • 专为定制软件混音器设计,但SDL_mixer提供完整的音频/音乐输出库

文件 I/O 抽象

  • 用于打开、读取和写入数据的通用抽象
  • 对文件和内存的内置支持

共享对象支持

  • 加载共享对象(Windows 上的 DLL,Mac OS X 上的 .dylib,Linux 上的 .so)
  • 共享对象中的查找函数

线程

  • 简单的线程创建API
  • 简单线程本地存储API
  • 互斥体、信号量和条件变量
  • 无锁编程的原子操作

计时器

  • 获取经过的毫秒数
  • 等待指定的毫秒数
  • 在单独的线程中创建与代码一起运行的计时器
  • 使用高分辨率计数器进行分析

CPU 特性检测

  • 查询CPU数量
  • 检测 CPU 特性和支持的指令集

大端小端支持

  • 检测当前系统的字节序
  • 用于快速交换数据值的例程
  • 读取和写入指定字节序的数据

电池管理

  • 查询电源管理状态

SDL 在哪些平台上运行?

Windows

  • 使用 Win32 API 进行显示,利用 Direct3D 进行硬件加速
  • 使用 DirectSound 和 XAudio2 作为声音

Mac OS X

  • 使用 Cocoa 进行视频显示,利用 OpenGL 进行硬件加速
  • 使用 Core Audio 播放声音

Linux

  • 使用 X11 进行视频显示,利用 OpenGL 进行硬件加速
  • 使用 ALSA、OSS 和 PulseAudio API 来处理声音

IOS

  • 使用 UIKit 进行视频显示,利用 OpenGL ES 2.0 进行硬件加速
  • 使用 Core Audio 播放声音

Android

  • 使用 JNI 接口进行视频显示,利用 OpenGL ES 1.1 和 2.0 进行硬件加速
  • 对声音使用 JNI 音频回调

下载和安装 SDL2

安装 SDL2

  1. 点击 SDL2 核心库下载 下载SDL2库,进入 GitHub下载
    在这里插入图片描述
    在这里插入图片描述

  2. 下载出来会有一个压缩包,放到一个合适的目录(记住这个目录哦,经常要用的),解压。
    在这里插入图片描述

  3. 进入解压后的目录,如下图:

    1. cmake:cmake配置文件
    2. docs:文档目录,只不过都是英文的
    3. include:头文件目录,编程需要的
    4. lib:库目录(静态库和动态库都有)

在这里插入图片描述
4. 给环境变量添加库目录,让程序运行的时候能够找到动态库。
在这里插入图片描述

clion 配置 SDL2

配置 CMakeLists.txt

在你的 CLion 项目中,你需要更新 CMakeLists.txt 文件以包含 SDL2。这通常涉及以下几个步骤:

* 查找 SDL2 的头文件和库文件。
* 使用 `find_package` 命令(如果可用)。
* 添加 SDL2 的头文件路径和库文件到你的项目中。

以下是一个简单的 CMakeLists.txt 示例,用于在 Unix-like 系统(如 Linux 或 macOS)上包含 SDL2:

cmake_minimum_required(VERSION 3.28)
project(SDL2_config C)set(CMAKE_C_STANDARD 23)
# 查找SDL2包,REQUIRED强制请求,没找到报错
find_package(SDL2 REQUIRED) 
# 使用指定的源文件生成目标
add_executable (${PROJECT_NAME} "main.c")
# 指定目标在链接时需要的依赖(库)
target_link_libraries(${PROJECT_NAME} ${SDL2_LIBRARIES})

注意:在 Windows 上,你可能需要手动指定 SDL2 的头文件和库文件的路径。
编写代码

现在你可以开始编写使用 SDL2 的代码了。以下是一个简单的 SDL2 初始化示例:

#define SDL_MAIN_HANDLED
#include <SDL.h>int main(int argc, char* argv[]) {SDL_version ver;SDL_GetVersion(&ver);SDL_Log("%d %d %d\n", ver.major, ver.minor, ver.patch);return 0;
}

在这里插入图片描述

构建和运行

现在你可以使用 CLion 构建并运行你的 SDL2 项目了。如果一切正常,你应该会看到一个 SDL2 窗口显示出来。

这篇关于【重学C语言】十八、SDL2 图形编程介绍和环境配置的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1037971

相关文章

Maven的使用和配置国内源的保姆级教程

《Maven的使用和配置国内源的保姆级教程》Maven是⼀个项目管理工具,基于POM(ProjectObjectModel,项目对象模型)的概念,Maven可以通过一小段描述信息来管理项目的构建,报告... 目录1. 什么是Maven?2.创建⼀个Maven项目3.Maven 核心功能4.使用Maven H

SpringBoot多数据源配置完整指南

《SpringBoot多数据源配置完整指南》在复杂的企业应用中,经常需要连接多个数据库,SpringBoot提供了灵活的多数据源配置方式,以下是详细的实现方案,需要的朋友可以参考下... 目录一、基础多数据源配置1. 添加依赖2. 配置多个数据源3. 配置数据源Bean二、JPA多数据源配置1. 配置主数据

Spring 基于XML配置 bean管理 Bean-IOC的方法

《Spring基于XML配置bean管理Bean-IOC的方法》:本文主要介绍Spring基于XML配置bean管理Bean-IOC的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一... 目录一. spring学习的核心内容二. 基于 XML 配置 bean1. 通过类型来获取 bean2. 通过

如何使用Nginx配置将80端口重定向到443端口

《如何使用Nginx配置将80端口重定向到443端口》这篇文章主要为大家详细介绍了如何将Nginx配置为将HTTP(80端口)请求重定向到HTTPS(443端口),文中的示例代码讲解详细,有需要的小伙... 目录1. 创建或编辑Nginx配置文件2. 配置HTTP重定向到HTTPS3. 配置HTTPS服务器

SpringBoot中配置Redis连接池的完整指南

《SpringBoot中配置Redis连接池的完整指南》这篇文章主要为大家详细介绍了SpringBoot中配置Redis连接池的完整指南,文中的示例代码讲解详细,具有一定的借鉴价值,感兴趣的小伙伴可以... 目录一、添加依赖二、配置 Redis 连接池三、测试 Redis 操作四、完整示例代码(一)pom.

Linux内核参数配置与验证详细指南

《Linux内核参数配置与验证详细指南》在Linux系统运维和性能优化中,内核参数(sysctl)的配置至关重要,本文主要来聊聊如何配置与验证这些Linux内核参数,希望对大家有一定的帮助... 目录1. 引言2. 内核参数的作用3. 如何设置内核参数3.1 临时设置(重启失效)3.2 永久设置(重启仍生效

IDEA自动生成注释模板的配置教程

《IDEA自动生成注释模板的配置教程》本文介绍了如何在IntelliJIDEA中配置类和方法的注释模板,包括自动生成项目名称、包名、日期和时间等内容,以及如何定制参数和返回值的注释格式,需要的朋友可以... 目录项目场景配置方法类注释模板定义类开头的注释步骤类注释效果方法注释模板定义方法开头的注释步骤方法注

如何在Mac上安装并配置JDK环境变量详细步骤

《如何在Mac上安装并配置JDK环境变量详细步骤》:本文主要介绍如何在Mac上安装并配置JDK环境变量详细步骤,包括下载JDK、安装JDK、配置环境变量、验证JDK配置以及可选地设置PowerSh... 目录步骤 1:下载JDK步骤 2:安装JDK步骤 3:配置环境变量1. 编辑~/.zshrc(对于zsh

售价599元起! 华为路由器X1/Pro发布 配置与区别一览

《售价599元起!华为路由器X1/Pro发布配置与区别一览》华为路由器X1/Pro发布,有朋友留言问华为路由X1和X1Pro怎么选择,关于这个问题,本期图文将对这二款路由器做了期参数对比,大家看... 华为路由 X1 系列已经正式发布并开启预售,将在 4 月 25 日 10:08 正式开售,两款产品分别为华

Python如何自动生成环境依赖包requirements

《Python如何自动生成环境依赖包requirements》:本文主要介绍Python如何自动生成环境依赖包requirements问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑... 目录生成当前 python 环境 安装的所有依赖包1、命令2、常见问题只生成当前 项目 的所有依赖包1、