SDL游戏开发之一-SDL的简介

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

本教程为一个长系列,旨在于从零开始边学习SDL边开发游戏。

一.什么是SDL?

SDL(Simple DirectMedia Layer)是一套开放源代码的跨平台多媒体开发库,使用C语言写成。SDL提供了数种控制图像、声音、输出入的函数,让开发者只要用相同或是相似的代码就可以开发出跨多个平台(Linux、Windows、Mac OS X等)的应用软件。目前SDL多用于开发游戏、模拟器、媒体播放器等多媒体应用领域。

以上来自360百科。下面则是自己的一些看法。

所谓SDL,就是一个跨平台的、通用的库。它旨在提供平台无关的创建窗口、事件监听等;而与前面提到的窗口创建等来说,SDL在绘图方面来说并不是那么出色,其提供的真正的绘图函数仅仅也是只有两个而已,不过一般的2D游戏的话,完全使用SDL开发已经是足够的。而更高一级的游戏开发则通常是SDL来处理窗口的创建、资源的加载、事件监听等;使用OpenGL或OpenGL es等来负责绘制。

 

从上图可知,SDL所做的就是封装了各个操作系统下的差异性,并提供了平台无关的API,使得开发者可以更好的进行上层开发。

二.什么是游戏引擎?

游戏引擎是指一些已编写好的可编辑电脑游戏系统或者一些交互式实时图像应用程序的核心组件。这些系统为游戏设计者提供各种编写游戏所需的各种工具,其目的在于让游戏设计者能容易和快速地做出游戏程式而不用由零开始。大部分都支持多种操作平台,如Linux、Mac OS X、微软Windows。游戏引擎包含以下系统:渲染引擎(即"渲染器",含二维图像引擎和三维图像引擎)、物理引擎、碰撞检测系统、音效、脚本引擎、电脑动画、人工智能、网络引擎以及场景管理。(360百科

像cocos2d-x、unity等就属于游戏引擎,不过个人认为cocos2d-x的脚本封装没有unity彻底。

接下来则把SDL与当下时兴的名词进行一个比较。

三.SDL与时兴名词的比较。

1.OpenGL

如果用一句话来概括的话,OpenGL的功能就是3D绘制,2D则是3D的一种特殊情况。OpenGL可以与SDL很好的配合使用,即OpenGL负责绘制,而SDL则负责处理绘制之外的事情,比如资源加载、文件存取、创建窗口、事件接收等。

2.cocos2d-x

cocos2d-x是一款c++游戏引擎,cocos表示的是最初的cocos游戏引擎,2d表示的是2d游戏,而x则表示的跨平台。所以,总的来说,cocos2d-x就是一款主攻2D游戏的、c++的游戏引擎。为什么说主攻呢?因为就目前来说,cocos2d-x也开始涉及3D开发了。另外,cocos2d-x的绘图使用的是OpenGL,而它的跨平台则基于不同的平台有着不同的处理,这部分倒是和SDL有些重叠。另外,目前cocos2d-x开始向脚本化发展,即在c++层上又封装了一层,使得开发者可以使用js或者lua,再搭配Cocos编辑器进行开发。不过个人认为相对于unity来说,Cocos并不成熟,而又因为仍处于起步阶段,所以更新快。个人认为这既是好事,也是坏事。我一开始倾向于使用cocos2d-x进行游戏开发,不过后来因为一个bug和官方对c++的冷落,使得我转战其他。。。

3.unity

unity是一款闭源的、商用的、底层使用c++所写的游戏引擎,因为unity的免费政策而流行起来。unity主攻是3d方向,目前也开始涉及2D游戏的开发,并且也取得了不错的成绩。在编辑器方面,unity相对成熟的多,官方文档也比较丰富。unity主要使用c#进行脚本开发,采用组件式编程,使得各个组件可复用性高。

四.总结

总而言之,SDL的功能可以认为是cocos2d-x为了跨平台所做的工作的集合,而学习SDL游戏开发,则是在学习SDL的API的基础上,再进行游戏方面的开发。SDL在封装程度上类似于OpenGL,而与unity等成熟的游戏引擎来说差了约两层左右,即先是把SDL的API以c++进行封装,然后再基于c++层再进行脚本的封装。所以,SDL足够底层,这也就导致了学习SDL就向学习c/c++一样,可能要很久才能有一个成品,即学习周期长。

每个人的目的与想法不同,则选择也会不同。如果你想尽快的开发游戏,则unity是一个好的选择;如果你想学习c++的话,cocos2d-x是一个不错的选择;如果能耐着住寂寞的话,则跟着本教程是个不错的选择。

本系列主要参考

《SDL Game Development》

 

推荐SDL教程:

lazyfoo的SDL2教程

 

推荐贴吧:

c4driod吧

SDL吧

SDL入门教程 #1 qadqwdqw swdq 阅读详情

相关推荐

C++游戏和多媒体应用程序的开发库--SDL库和SFML库

,您的应用程序可以在最常见的操作系统上开箱即用地编译和运行

m0_60352504的博客 2720

一组实用功能,旨在帮助使用 Vulkan 和 SDL 创建 3D 游戏_c语言_代码_下载

一组实用功能,旨在帮助使用 Vulkan 和 SDL 创建 3D 游戏。总的来说,GF3D 将作为一个最小的游戏引擎。分支包含用于实现 3D 游戏的不同功能的示例代码。 一组实用功能,旨在帮助创建 3D 游戏OpenGLVulkan 和 SDL2 这个项目专门用作我学习 3D 游戏编程的学生的教育工具。 目前该项目处于WIP状态。它代表了我第一次尝试设置 vulkan 渲染管道。它不稳定,我打算一有时间就彻底重写 vulkan 系统 构建过程 在构建我们为您提供的示例代码之前,您需要获取源代码所需的库。其中一些库很容易获得,而其他库则由安装在您计算机中的硬件供应商提供。获得库后,应该可以从终端中克隆的 git 存储库的根目录中的以下步骤执行以下步骤序列。 更多详情、使用方法,请下载后阅读README.md文件

SDL解析——SDL简介

SDL是什么?它是一个集输入控制,音频处理,视频处理于一身的跨平台底层函数库。SDL的一个主要应用领域就是游戏开发。很多知名的游戏都是以它为基础的。由于它的易用,高性能以及跨平台等诸多优点。被广泛的应用在各种操作系统之中。    SDL本身是使用C语言写成的。对C/C++语言具有原生的支持。与此同时,它也被绑定到了其他编程语言之中,这些语言包括Ada, C#, D, Eiffel, Erlang, Euphoria, Guile, Haskell, Java, Lisp, Lua, ML, Object

桃李无言 1万+

基于C语言和SDL2开发的2D平台跳跃游戏_超级骑士冒险_完整物理系统_动画渲染_音效系统_敌人AI_角色移动_重力碰撞_卷轴摄像机_特殊方块_敌人系统_UI界面_道具技能_混合渲.zip

基于C语言和SDL2开发的2D平台跳跃游戏_超级骑士冒险_完整物理系统_动画渲染_音效系统_敌人AI_角色移动_重力碰撞_卷轴摄像机_特殊方块_敌人系统_UI界面_道具技能_混合渲.zip

SDL教程零基础入门 简单操作 day1

sdl 教程零基础从新手到大佬,从大佬到萌新

ylh的博客 5036

SDL库入门:掌握跨平台游戏开发和多媒体编程

SDL库入门:掌握跨平台游戏开发和多媒体编程

探索C++编程的奥秘,分享深入的技术见解和实践,旨在激发读者创造力与解决问题的思维。 5400

深入探索SDL游戏开发

"深入探索SDL游戏开发

热爱编程的小K的博客 4590

【亲测免费】 SDL入门教程中文

SDL入门教程中文 【下载地址】SDL入门教程中文分享 SDL入门教程中文 项目地址: https://gitcode.com/Open-source-documentation-tutorial/62dc0 ...

gitblog_06669的博客 436

SDL_GameControllerDB 开源项目教程

SDL_GameControllerDB 是一个开源项目,旨在为 SDL (Simple DirectMedia Layer) 游戏开发库提供一个游戏控制器的数据库。这个数据库包含了各种游戏控制器的映射信息,使得开发者能够在不同的平台上使用各种游戏控制器,而无需为每个控制器单独编写映射代码。 ## 项目快速启动 ### 安装 SDL2 首先,确保你已经安装了 SDL2 库。你可以通过以下命令

gitblog_00529的博客 775

C++ 在2D与3D游戏的开发库

SDL是一个跨平台的软件开发库,它提供了对音频、键盘、鼠标、游戏手柄等硬件设施的低级访问接口。SDL最初由Sam Lantinga于1998年创建,目的是为了简化多媒体应用尤其是游戏的开发过程。自那时以来,SDL已经发展成为一个成熟的框架,被广泛应用于各种操作系统之上。SFML是一个面向对象的多媒体库,它提供了对图形、声音、网络等多媒体元素的支持。SFML的设计目标是让开发者能够轻松地创建2D游戏和其他多媒体应用程序,同时保持高性能。

h a 6 6 6 c k 为 你解决复杂难题! 654

SDL介绍

SDL介绍

hffgjh的博客 565

C语言游戏开发:Pygame、SDL、OpenGL深度解析

C语言游戏开发技术解析 本文深入探讨了C语言游戏开发中的三大核心技术框架:Pygame、SDL和OpenGL。文章首先阐述了游戏开发作为C语言重要技能的价值,包括其在高性能游戏开发领域的核心地位。 在技术实现层面,详细分析了: Pygame框架:基于SDL的Python游戏库,介绍了窗口管理、事件处理、图形渲染等核心架构,并提供了窗口创建和图形绘制的代码示例。 SDL框架:跨平台多媒体库,讲解了其窗口系统、事件处理和渲染机制,展示了C语言下的SDL窗口创建和图形绘制实现。 文章通过具体代码示例演示了各框架的

编程世界如山海,探索不止。 2万+

【Linux】使用SDL进行游戏开发:如何在Linux上使用SDL库进行2D/3D游戏开发

Simple DirectMedia Layer (SDL) 是一个跨平台的多媒体库,广泛用于2D和3D游戏开发SDL提供了对音频、键盘、鼠标、游戏控制器、图像和窗口的访问。本文将介绍如何在Linux上配置和使用SDL库进行2D/3D游戏开发

科技改变人类,技术成就未来 1394

SDL 入门指南:了解 SDL,快速上手 SDL 的安装和配置——VS2022

SDL 入门指南:了解 SDL,快速上手 SDL 的安装和配置”——VS2022

热爱编程的小K的博客 3万+

C++面向对象封装SDL游戏开发实战教程

SDL(Simple DirectMedia Layer)是一个开源的跨平台多媒体开发库,专为高性能游戏和多媒体应用的底层开发而设计。它提供了对音频、键盘、鼠标、游戏手柄、图形硬件的低级访问接口,帮助开发者屏蔽不同操作系统之间的差异,实现一次编写、多平台运行。SDL支持的操作系统包括:- Windows- Linux- macOS- iOS- Android- 甚至嵌入式系统如Raspberry Pi。

weixin_28999139的博客 885

如何在Linux平台使用SDL库进行2D/3D游戏开发

Simple DirectMedia Layer (SDL) 是一个跨平台的多媒体库,广泛用于2D和3D游戏开发SDL提供了对音频、键盘、鼠标、游戏控制器、图像和窗口的访问。本文将介绍如何在Linux上配置和使用SDL库进行2D/3D游戏开发。 ???? 1. 环境准备 ???? 1.1 安装SDLSDL库在大多数Linux发...

cnzzs的博客 1497

0. SDL游戏开发

文章目录环境准备还是hello world简单解释 环境准备 IDE选用codeblock带mingw(跨平台, 可定制, 轻量), 编译器gcc. SDL库编译(或下载预编译的库) 这里不教怎么搭环境, 任何语言开发, 自己都应该学会如何搭环境. 自行搜索资料 还是hello world #include <SDL.h> #include <ios

creambean的博客 8659

SDL游戏开发之六-简单的SDL程序

1.最简单的SDL程序 一般的游戏在运行过程中的大部分操作都是在一个大循环里,在这个循环里进行着事件监听、绘制以及逻辑处理等。而像网络通信或者是文件读取等这些比较耗时或者堵塞的操作一般会放到子线程里面。流程图如下: 图1-游戏流程图 先创建窗口和渲染器;如果创建成功,则进入大循环里;否则则直接退出; 进行逻辑处理、绘制、事件处理等(注意:以上三个是不分先后的); 如果发现有退出信号,...

bull521的博客 3158

SDL —— SDL2及API简介

简介      SDL2框架      1、SDL 视频渲染主要涉及到四个对象 (引用雷神部分文章)           SDL_Window                SDL_Window结构体定义了一个SDL2窗口。若直接使用编译好的SDK,那么是看不到其内部结构。           SDL_Surface                在SDL中,所有绘制在视频输出都是通过SDL_Sur对face对象来输出。一个图像,一段文字,一个视频都需要转换成SDL_Surface对象来操作,它们可以平铺,

1万+
上一篇: 角色寻路之A*算法
下一篇: SDL游戏开发之二-配置开发环境
小牛_牛sky
博客等级 码龄12年 221粉丝 130原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值