SDL
小牛_牛sky
学海无涯
展开
-
SDL游戏开发之七-虚拟摇杆
当下的智能机除了音量键、Home键外,几乎没有多余的按键,因而有一部分游戏提供了虚拟摇杆。SDL2.x并没有提供虚拟摇杆相关的代码,不过实现起来并不算困难;虚拟摇杆包括绘图和事件处理:前者提供视觉效果,后者则捕获事件并作出响应。示例结果如下:图1-虚拟摇杆演示程序本示例中大约有四个类:Game类 主要包含了初始化、事件处理、纹理绘制等功能,是本示例的核心类; Player...原创 2019-10-17 21:02:39 · 1453 阅读 · 0 评论 -
SDL游戏开发之六-简单的SDL程序
1.最简单的SDL程序一般的游戏在运行过程中的大部分操作都是在一个大循环里,在这个循环里进行着事件监听、绘制以及逻辑处理等。而像网络通信或者是文件读取等这些比较耗时或者堵塞的操作一般会放到子线程里面。流程图如下:图1-游戏流程图先创建窗口和渲染器;如果创建成功,则进入大循环里;否则则直接退出; 进行逻辑处理、绘制、事件处理等(注意:以上三个是不分先后的); 如果发现有退出信号,...原创 2019-10-05 07:49:39 · 2727 阅读 · 0 评论 -
SDL游戏开发之五-解析并使用GIF
在游戏开发中,使用的图片一般情况下的格式为PNG,在我看来PNG有着以下几个好处:不错的压缩比 alpha通道(支持透明) 无损压缩以上的几个特性使得PNG在游戏开发中大放异彩。另外,主流就是使用PNG+TexturePacker,把碎图整合成一张大的图片(一般是POT Power Of Two,图片的宽和高是2的幂),然后再在程序中使用。这样做的好处主要是为了兼容旧的设备、方便对齐处理...原创 2019-10-02 15:22:20 · 1372 阅读 · 0 评论 -
SDL游戏开发之四-卡马克卷轴
上一篇实现了瓦片地图的绘制,但是单纯地使用上面的代码还是有些问题的,下面就来讨论一下单纯使用瓦片地图的局限性。假设游戏的分辨率为960*720,瓦片地图的大小也是960*720,瓦片大小为32,那么960/32 = 30, 720 / 32 = 22,即共有瓦片30*22=660个。一般的游戏的FPS在60左右,即15ms刷新一次,那么需要在这15ms之内最多要660次才能绘制出整个地图,这还...原创 2019-04-26 20:23:57 · 3073 阅读 · 0 评论 -
SDL游戏开发之三-瓦片地图
一.瓦片地图1)瓦片地图简介瓦片地图(Tiled Map),又称为瓷砖地图,是在游戏开发中经常使用到的技术,它是由少量的尺寸相同的、小的瓦片图片拼接而成的很大的地图。相对于使用一张张图片来绘制地图而言,瓦片地图不仅大大地节省了内容,而且增加了图片的重用性和绘制性能。使用一般的背景图会面临很多问题:①:OpenGL ES对于纹理有大小限制,最大支持2048*2048像素,且超出这个范...原创 2019-04-26 15:48:52 · 3456 阅读 · 0 评论 -
SDL游戏开发之二-配置开发环境
一般情况下,在任何一个计算机语言中要使用第三方功能时,都需要配置环境,SDL同样如此。在我一开始学习的时候对环境配置是深恶痛绝的,稍微出错都会影响学习积极性。但不得不承认,环境的配置一般都是第一件要做的事。一.为什么要进行环境配置?以c/c++为例,所谓的环境配置就是配置头文件和库文件的目录。因为我们在自己的代码中要使用第三方所提供的API(简单地说,API就是各种函数,比如c/c++...原创 2019-02-03 22:32:55 · 10511 阅读 · 1 评论 -
SDL游戏开发之一-SDL的简介
本教程为一个长系列,旨在于从零开始边学习SDL边开发游戏。一.什么是SDL?SDL(Simple DirectMedia Layer)是一套开放源代码的跨平台多媒体开发库,使用C语言写成。SDL提供了数种控制图像、声音、输出入的函数,让开发者只要用相同或是相似的代码就可以开发出跨多个平台(Linux、Windows、Mac OS X等)的应用软件。目前SDL多用于开发游戏、模拟器、媒体播放...原创 2019-02-02 10:34:16 · 13484 阅读 · 0 评论 -
3.SDL2_net TCP服务器端和多个客户端 续
上一节缺少了tcputil的讲解,首先这几个函数都不是我写的,一部分是从SDL_net官网上下载的小例子,另一部分是找的github上的代码。tcputil.h#ifndef tcputil_h#define tcputil_h 1#ifdef WIN32#else #include <sys/socket.h> #include &l...原创 2018-11-25 16:16:42 · 533 阅读 · 0 评论 -
2.SDL2_net TCP服务器端和多个客户端
上一节初步了解到了服务器和客户端的通信,并且由于受到代码的限制,只能是单个客户端,而且服务器无法向客户端发送信息,本节使用SDL_Net的套接字列表(Socket Set)特性来实现比上一节功能更强的代码,即一个服务器对应多台客户端。一.项目结构CMakeLists.txt的编写上一节客户端和服务器分成了两个文件夹的结构清晰,但代码相对比较重复,其实可以合成为一个文件夹,不过CMakeLi...原创 2018-11-24 21:36:52 · 806 阅读 · 0 评论 -
SDL 简单文本的输入处理
这几天忙着局域网联机相关内容,俗话说,用到什么学什么(这什么俗话。。。),我大致分析了一下我的需求,大致如下:游戏使用局域网联机,每个用户既可以当客户端,又可以当服务器,但服务器仅有一个,即房主。 服务器端显示IP地址。 客户端能输入IP地址和个人的名称,来尝试链接入服务器。前两个在前面写的SDL_net文章中大致都实现了,接下来就是实现IP地址和用户名的输入(英文、数字)。一.相关...原创 2018-11-25 17:08:33 · 5170 阅读 · 5 评论 -
1.SDL2_net TCP服务器端和客户端的通信
这几天打算把以前做的游戏尝试加入局域网联机,恰巧SDL提供了对应的库,即SDL2_net。1.安装我的系统是ubuntu,安装相对简单,下面一个命令即可:sudo apt install libsdl2-net-dev等待安装完成即可。如果使用的是window,可以去官网下载对应的链接库http://www.libsdl.org/projects/SDL_net/下载...原创 2018-11-22 11:10:58 · 1989 阅读 · 0 评论 -
2.unbutu下使用cmake管理引用SDL相关库项目
个人推荐,项目目录如下较好build:用来存放cmake的缓存文件及make编译后的中间文件Classes:存放主项目文件cmake:存放各种查找SDL相关头文件和库文件路径模块Resources:存放资源文件SDL_Engine:存放个人动态库的相关文件在这里,我是把源文件分成两部分,SDL_Engine目录存放的是游戏框架;而Classes则存放的是基于SDL_En...原创 2018-09-07 16:59:25 · 1881 阅读 · 0 评论 -
1.unbutu下SDL2相关库的安装和测试
最近在学习linux,就以unbutu起手来学习各种命令,都说linux编程的优势要大于Windows,抱着试一试的心态想着把Windows的代码移植到unbutu上,因为使用的SDL,所以也就存在移植的可能性。第一步就是要安装相应的依赖库,一般情况下会用到SDL2 SDL2_image SDL2_mixer SDL2_ttf SDL2_gfx等。有两种安装方法:1.去官网下载对应的压缩包,*...原创 2018-09-06 19:54:21 · 6292 阅读 · 0 评论