原文地址:https://www.cnblogs.com/landmark/category/311822.html

介绍SDL图形库的使用

摘要: 前面教程里,我们只显示图片,没提到如何显示文字,SDL本身没有显示文字功能,它需要用扩展库SDL_ttf来显示文字。ttf是True Type Font的缩写,ttf是Windows下的缺省字体,它有美观,放大缩小不变形的优点,因此广泛应用很多场合。 使用ttf库的第一件事要从Windows的字库下拷贝出一个字库出来,最好是中文字体,这样可以同时支持英文和中文显示。它一般在c:\windows\fonts 目录下面。比如simhei.ttf 就是仿黑体的字库,将这个文件拷贝到你的源文件目录下。 要使用SDL_ttf库首先要下载该扩展库:http://www.libsdl.org/pro...阅读全文
posted @ 2012-06-01 11:10 成少雷 
摘要: 如果我们在SDL程序中需要每个一个固定时间去处理一件事情,那么我们需要一个定时器,就像生活中钟表一样可以整点报时,这个功能就是SDL的定时器子系统,你要使用SDL的定时器必须初始化定时器子系统,请看《SDL起动与退出》,SDL定时器比较简单就是一个间隔固定时间的函数调用,如果你要添加一个定时器可以使用函数SDL_AddTimer,其原型为:SDL_TimerID SDL_AddTimer(Uint32 interval, SDL_NewTimerCallback callback, void *param);其中:函数的返回值SDL_TimerID是一个结构体指针,SDL文档中并没有给出其..阅读全文
posted @ 2012-05-25 16:48 成少雷 
摘要: 前面我们已经讲过键盘事件的处理,这次聊聊鼠标事件处理。我们从队列里获取到事件以后,可以检测事件的类型,鼠标事件有两个:鼠标键(按下、松开)和鼠标移动。一般的检测代码如下: 1 SDL_Event myEvent;//事件 2 int quit=0; 3 4 while (!quit) 5 { 6 while (SDL_PollEvent(&myEvent)) 7 { 8 switch (myEvent.type)//检测事件类型 9 {10 case SDL_QUIT:11 quit = 1;12 ...阅读全文
posted @ 2012-05-17 22:03 成少雷 
摘要: 如果我们要做一个游戏,会涉及到大量的图片,如果这些图片都用单个文件保存,那程序里会加载大量的图片,会有很多表面,处理起来很麻烦,一般会把游戏里使用的图片分类,一类图片保存到一个大图片里,使用的时候在按要求裁剪出需要的部分,这张大图就叫精灵图,裁剪出来的部分叫精灵。 下面我们做一个简单的例子,来演示一下如何裁剪精灵图,需要的图片有两张,第一张是背景图,随便用什么都可以,第二张是精灵图。我们会让精灵在地图上走动。 精灵图里是一个小人各种样子,小人大小都是一样的,图片大小为96*192,所以可以计算出每个小人(精灵)大小为32*48,这样我们就可以按照这个比例抠出精灵。SDL_Surface *g.阅读全文
posted @ 2012-05-11 15:38 成少雷
摘要: 在进行编写SDL程序时,会出现很多意外情况,比较常见的问题有:无法加载“SDL.h”,“No such file ordirectory” 这应该是最常见的一类问题,原因是你SDL安装的有问题,比如说你的SDL头文件没有放到指定的位置,会引起系统无法找到头文件,你可以这样测试一下: 在包含的sdl.h上右键,点“go to Header file”如果能够转到sdl.h这个头文件,证明你sdl安装没问题,如果不能则要看一看是不是头文件加载的不对,如果你是按教程的第一种方式安装的SDL,应该这样加载头文件:#include <sdl\SDL.h> 注意这里<>里的字符区分阅读全文
posted @ 2012-05-11 10:36 成少雷 
摘要: 到目前为止,我们的程序还是静态的,只能显示图片,不能接收任何的按键、不能检测鼠标等。所有窗口程序基本上都是基于事件驱动的,当某个事件发生时,程序会做出相应的相应,这种方式和控制台程序有很大的不同,这种方式更加接近真实的世界. 那么什么是事件呢?事件可能是由使用者操作产生的,比如使用者按下一个键,松开一个键,或点击了鼠标等,也可能是硬件产生的比如时钟脉冲等。任何一个窗口程序都使用一个事件队列来保存这些事件,队列的一个特性便是先进先出,先进入队列的事件会被优先处理。如下图所示,事件在队尾入队,队头出队,先发生的事件先入队,出队的时候也会先出队。事件入队是由系统处理的,我们不用关心,我们关心的...阅读全文
posted @ 2012-05-10 16:14 成少雷
摘要: 视频子系统中构基本概念和常用数据结 视频子系统中基本概念: 1.坐标系统 SDL视频子系统的坐标系统,SDL坐标是以屏幕左上角作为坐标原点,x轴向右增长,y轴向下增长。象这样: SDL坐标系统 这和我们以前知道的笛卡尔坐标系不一样,大家要牢记这一点。再者,SDL中任意一个表面(包括显示表面)的左上角是坐标原点,任意一个表面都用一个矩形来表示大小。 2. 像素(Pixel) 屏幕上一个个光点称为像素,是屏幕显示的最小单位,我们所说的屏幕分辨率1024*768,就是指一屏有个768行,每行有1024个像素。如果只显示黑白色,一个像素只需要0,1即可表示,但大多数情况下,屏幕不只...阅读全文
posted @ 2012-05-08 17:28 成少雷
摘要: 到现在为止我们只创建了一个窗口,其他什么都没干,这次我们将在窗口里显示图片,这是视频子系统最常用的功能,显示图片。SDL视频子系统只能加载bmp格式的位图。调用函数是SDL_Surface *SDL_LoadBMP(const char *file);这个函数的参数是c语言的字符串,返回值是一个绘图表面。在SDL中有两种绘图表面,第一种是使用SDL_SetVideoMode函数生成的显示表面(或窗口),显示表面是唯一的,只能使用SDL_SetVideoMod生成,显示表面可以直接显示在屏幕上;除了显示表面,加载图片生成的表面,加载字体生成的表面,这些表面不能直接显示在屏幕上,这是这两种表面..阅读全文
posted @ 2012-05-06 10:33 成少雷 
摘要: SDL视频子系统 在SDL中最为常用子系统就是视频子系统。这里说的视频不是指我们平常播放的电影等,而是指在屏幕上显示出来的东西,你需要在屏幕上显示图片、文字等那就必须使用视频子系统,否则什么都看不到,视频子系统支持:设置视频模式或者说创建视频窗口;支持直接的图像帧缓冲;支持Alpha像素混合;支持Blit位块传输(可以硬件加速);支持窗口管理;支持图形渲染。 要使用视频子系统首先要创建一个SDL窗口(或者说设置SDL的显示模式),我们可以使用: /* 功能:建立SDL显示表面 参数:int width 窗口宽度 单位象素 int height 窗口高度 单位象素 in...阅读全文
posted @ 2012-05-04 13:17 成少雷 
摘要: 上一次我们建立起了SDL环境,接下来,我们谈一谈什么是SDL?如何起动和退出SDL. Simple DirectMedia Layer库,简称SDL,它是一个跨平台的多媒体库,以用于直接控制底层的多媒体硬件的接口。这些多媒体功能包括了视频、音频、键盘和鼠标(事件)、游戏摇杆等。当然,最为重要的是提供了2D图形帧缓冲(framebuffer)的接口,以及为OpenGL与各种操作系统之间提供了统一的标准接口以实现3D图形。也就是说我们通过这个图形库可以自己写游戏,播放电影、歌曲等等,哪些C语言基本库里无法完成的任务,我们可以通过SDL的库完成,只要按上一次的要求安装完了SDL,我们就可以自由...阅读全文
posted @ 2012-04-29 10:50 成少雷 
摘要: SDL安装C语言没有图形库,似乎编写C语言的程序就要面对那个黑黑的控制台窗口,这也是很多人对C语言提不起兴趣的原因,但我们可以使用第三方的图形库,比如说open GL,directX,SDL等等,其中SDL比较小巧,并且是开源的,适合入门者学习。有了图形库以后我们就可以编写界面丰富多彩的程序了,你会发现一片新的天地! SDL(Simple DirectMedia Layer)是一个自由的跨平台的多媒体开发包,适用于 游戏、游戏SDK、演示软件、模拟器、MPEG播放器和其他应用软件。 SDL图形库包括八个子系统:视频、音频、事件、光驱、文件读写、游戏杆、时间、进程。最经常使用的是前三个,每一..阅读全文

SDL相关学习的更多相关文章

  1. 数论算法 剩余系相关 学习笔记 (基础回顾,(ex)CRT,(ex)lucas,(ex)BSGS,原根与指标入门,高次剩余,Miller_Rabin+Pollard_Rho)

    注:转载本文须标明出处. 原文链接https://www.cnblogs.com/zhouzhendong/p/Number-theory.html 数论算法 剩余系相关 学习笔记 (基础回顾,(ex ...

  2. Oracle OCI操作UDT相关学习(二)

    沿用 Oracle OCI操作UDT相关学习 一文中定义的类型和表. 1.更改数据 在sqldeveloper 中更新数据, update dxl.cust set addr.street='a11' ...

  3. ReentrantLock 相关学习笔记

    ReentrantLock 相关学习笔记 标签(空格分隔): Java多线程 Java接口Lock有三个实现类:ReentrantLock.ReentrantReadWriteLock.ReadLoc ...

  4. springCloud相关学习资料

    SpringCloud相关学习资料 SpringCloud资料参考: 1. 史上最简单的 SpringCloud 教程 | 终章 2. Spring Cloud基础教程 SpringCloud相关: ...

  5. 自然语言处理(NLP)相关学习资料/资源

    自然语言处理(NLP)相关学习资料/资源 1. 书籍推荐 自然语言处理 统计自然语言处理(第2版) 作者:宗成庆 出版社:清华大学出版社:出版年:2013:页数:570 内容简介:系统地描述了神经网络 ...

  6. SVG相关学习(一)SVG基础

    SVG 相关学习 SVG SVG 指可伸缩矢量图形 (Scalable Vector Graphics) SVG viewBox <svg width="500" heigh ...

  7. cesium相关学习网址

    cesium相关学习网址: cesium资料大全网址:https://www.cnblogs.com/cesium1/p/10062942.html       http://192.168.101. ...

  8. Yii2的相关学习记录,下载Yii2(一)

    原先学习过Yii1的相关知识,虽然也是半懂不懂的,但稍微的结构是了解的.现在利用晚上的时间学习下Yii2的使用,打算建一个后台管理系统,这里记录下,以免自己以后忘记. 目前已看一部分Yii2的权威指南 ...

  9. SDL相关资料

    SDL(Simple DirectMedia Layer)是一个自由的跨平台的多媒体开发包,适用于 游戏.游戏SDK.演示软件.模拟器.MPEG播放器和其他应用软件.目前支持windows,linux ...

随机推荐

  1. LCX端口内网映射转发

    这几天在渗透一家奶茶店的时候, 使用溢出攻击获得了奶茶店shell, 截屏以后发现该电脑有安装sqlserver, 但是数据库无法远程连接, 所以我决定使用端口映射工具突破端口连接限制: 我的机器地址 ...

  2. android中ListView控件最简单的用法

    创建一个活动,在xml文件中添加一个ListView控件,id定义为list1,并且设置为满屏显示,代码如下: <ListView android:id="@+id/list1&quo ...

  3. oneinstack一键部署linux生产环境那点事(ubuntu)

    http://oneinstack.com/install/ (1)将oneinstack-full.tar.gz最新版安装文件上传至/usr/local/下 (2)解压tar xzvf oneins ...

  4. vuejs组件交互 - 02 - 事件中心管理组件间的通信

    事件中心 这个可以是一个空的全局的Vue实例,其他的组件利用这个实例emit和on自定义事件,这样组件定义了自己的事件处理方法. import Vue from 'Vue' window.eventH ...

  5. js模板 arttemplate 让数据与html分离

    js模板引擎 前后交互过程中最麻烦的就是如何将json数据展示到页面中,循环拼接html的方法实在是太low了,饱受其苦,BAT同样会遇到这样的问题,于是乎就有个各自的js模板引擎,目的只有一个:让数 ...

  6. gcc-链接库顺序

    http://qianchenglong.github.io/2015/08/26/gcc-%E9%93%BE%E6%8E%A5%E5%BA%93%E9%A1%BA%E5%BA%8F/ http:// ...

  7. 使用 axios 详解

    Vue.js 1.0 我们常使用 vue-resource (官方ajax库), Vue 2.0 发布后作者宣告不再对 vue-resource 进行更新, 推荐我们使用 axios (基于 Prom ...

  8. Java多线程之ReadWriteLock读写锁简介与使用教程

    转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6558073.html  普通的锁在对某一内容加锁后,其他线程是不能访问的.但是我们要考虑这种情况:如果当前加锁 ...

  9. Kettle实现数据库迁移

    Kettle实现数据库迁移 需求: 做数据仓库时,需要将业务系统CRM抽取到数据仓库的缓冲层,业务系统使用的是SqlServer数据库,数据仓库的缓冲层使用的是mysql数据库,为实现数据库的迁移,即 ...

  10. django之环境变量配置

    1.配置python变量环境,C:\Python27\;C:\Python27\Scripts\ 2.配置django变量环境,C:\Python34\Lib\site-packages\Django ...