原文地址: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. 例子:使用Grunt创建一个Node.js类库

      创建一个文件夹. 打开命令行或者powershell, 运行npm init,根据提示填入package的信息. 在文件夹中创建index.js文件. /*! * mymongolib * Cop ...

  2. Springmvc 服务器端文件下载

    转自:http://blog.csdn.net/boneix/article/details/51303280 业务场景:点击下载后直接保存而不是打开 解决代码:前端传入url /** * 返回流 * ...

  3. 编程王道,唯“慢”不破

    原文地址 人和人之间编程速度的差异还是很大的,有的程序猿写代码非常快,有的却常常是龟速.Jeffrey Ventrella 最近在一篇文章里探讨了这种编程速度的差异,他是绝对的龟速派代表,来看看他对编 ...

  4. Android 显示网络图片

    本文内容 环境 演示显示网络图片 本文演示 Android 如何显示网络图片.学习一门新的语言,最好办法就先了解该语言的语法和库,以及设计思想,再着手现实一些常用功能,毕竟以后用该语言是要写程序的,而 ...

  5. 2014秋C++ 第9周项目 循环程序设计

    课程主页在http://blog.csdn.net/sxhelijian/article/details/39152703.课程资源在云学堂"贺老师课堂"同步展示,使用的帐号请到课 ...

  6. android中XRecyclerView控件的使用

    控件的地址:https://github.com/XRecyclerView/XRecyclerView XRecyclerView控件是一个加强版的RecyclerView,可以很方便的实现下拉刷新 ...

  7. iOS界面篇 - bounds和frame的相同和区别

    相同点: 他们都是CGRect类型,且拥有属性origin(x, y),  size(weight, height) 不同点: bounds是你画的视图的边界,和父视图没有半毛钱关系 frames则一 ...

  8. css背景全屏-视差

    <!DOCTYPE html> <html> <head> <title></title> <style> *{margin:0 ...

  9. git设置默认编辑为vim

    f you want to set the editor only for Git, do either (you don’t need both): Set core.editor in your ...

  10. 第八周(1) Word信函与邮件

    第八周(1) Word信函与邮件 教学时间 2013-4-15 教学课时 2 教案序号 13 教学目标 1.学会使用word制作信封和标签2.理解邮件合并的概念和功能3.学会利用邮件合并批量制作文档 ...