SDL系列之 - 编译参数

例9.7:设计一个程序,初始化视频子系统,设置显示模式为640*480,表面的色深为16位,使用SDL_ttf库在屏幕上显示“Linux下TrueType字体显示示例”,字体大小为38,颜色为红色。设程序名为9-7.c,存放在/home/cx/下。
准备工作:把windows下C:\WINDOWS\Fonts中的simsun.ttc文件拷贝到Linux下的/usr/share/fonts/下,用于显示中文。
编辑源程序代码:

 1 #include <SDL.h>
 2 #include <stdlib.h>
 3 #include <SDL_ttf.h>
 4 int main()
 5 {
 6         SDL_Surface *text, *screen;     //一个屏幕指针
 7         SDL_Rect drect;         //目标矩形
 8         TTF_Font *Nfont;        //文字样式对象
 9         SDL_Color red={ 255, 0, 0, 0 }; //设置字体颜色
10         int fontsize=38;                //设置字体大小
11         if(SDL_Init(SDL_INIT_VIDEO) < 0){       //初始化视频子系统失败
12                 fprintf(stderr,"无法初始化:%s\n",SDL_GetError());       //不能用printf(),因为没有包含stdio.h头文件
13                 exit(1);
14         }
15         //设置视频模式
16         screen=SDL_SetVideoMode(640,480,16,SDL_SWSURFACE);
17         if(screen==NULL){
18                 fprintf(stderr,"无法设置视频模式:%s\n",SDL_GetError());
19                 exit(1);
20         }
21         atexit(SDL_Quit);       //退出
22
23         if(TTF_Init()!=0){      //初始化字体
24                 fprintf(stderr,"Can‘t init ttf font!\n");
25                 exit(1);
26         }
27
28         //打开字体库
29         Nfont=TTF_OpenFont("/usr/share/fonts/simsun.ttc",fontsize);
30         TTF_SetFontStyle(Nfont,TTF_STYLE_NORMAL);       //设置字体样式
31         text=TTF_RenderUTF8_Blended(Nfont, "Linux下TureType显示示例",red);
32         TTF_CloseFont(Nfont);           //关闭字体库
33         TTF_Quit();             //退出
34         drect.x=40;             //在点(240,160)处开始写
35         drect.y=60;
36         drect.w=text->w;        //目标矩形的宽和高分别是所写字体的宽和高
37         drect.h=text->h;
38         SDL_BlitSurface(text, NULL, screen, &drect);    //把目标对象快速转化
39         SDL_UpdateRect(screen,0,0,0,0);         //更新整个屏幕
40         SDL_FreeSurface(text);          //释放写有文字的surface
41         SDL_Delay(5000);                //让屏幕停留5秒钟的时间
42
43         return 0;
44 }

SDL做文字显示在编译链接的时候记得要加上  -I /usr/include/SDL/ -lSDL -lSDL_ttf -lpthread 啊

特别是 -lSDL_ttf ,否则会报类似 undefined reference to `TTF_Init‘ 类似的错误

如果第29行  Nfont=TTF_OpenFont("/usr/share/fonts/simsun.ttc",fontsize); 换成 Nfont=TTF_OpenFont("/usr/share/fonts/georgiai.ttc",fontsize); 即Windows下的另一种字体,编译能通过,但运行时会报段错误

另:atexit(SDL_Quit);的作用是在程序退出时调用SDL_Quit()函数,这样就不必在每个要退出的地方都调用SDL_Quit()。

最后写出来的程序运行如下

时间: 2024-10-12 04:07:09

SDL系列之 - 编译参数的相关文章

SDL系列之 - 用画直线的方法来画正弦曲线

线段长度无限短后就成为点,所以,现在让我们用画直线的方法来画正弦曲线吧 1 #include <SDL.h> 2 #include <stdlib.h> 3 #include <string.h> 4 #include <math.h> 5 #include "SDL_draw.h" //包含SDL_draw库的头文件 6 int main() 7 { 8 int i; 9 double t; 10 double x,y; 11 doub

undefined reference to `TTF_Init&#39;

如果编译时遇上 undefined reference to `FunctionName' 或是这种类似错误,首先就得检查是不是函数名拼写错误,如果不是,那估计是编译时候有些链接库没加进去 比如这篇上面说的SDL系列之 - 字体显示测试 undefined reference to `TTF_Init'

[原]零基础学习在Android进行SDL开发系列文章

[原]零基础学习SDL开发之移植SDL2.0到Android [原]零基础学习SDL开发之在Android使用SDL2.0显示BMP图 [原]零基础学习SDL开发之在Android使用SDL2.0显示BMP叠加图 [原]零基础学习SDL开发之在Android使用SDL2.0渲染PNG图片 [原]零基础学习SDL开发之在Android使用SDL2.0加载字体 [原]零基础学习在Android进行SDL开发后记 [原]零基础学习在Android进行SDL开发系列文章,布布扣,bubuko.com

仙剑奇侠传1系列:2.编译主程序SDLPAL及SDL

介绍 仙剑奇侠传1是dos时代的经典游戏,相信以下图片能勾起大家的很多回忆.   sdlpal是仙剑奇侠传1的主程序.github项目sdlpal,项目地址:https://github.com/sdlpal/sdlpal,最早由国内仙剑奇侠传爱好 者 Wei Mingzhi发起维护,现由 SDLPAL开发团队维护,项目核心成员如下: Wei Mingzhi palxex <palxex.ys168.com> louyihua <louyihua绕过@爬虫21cn.com> 以上第

理解C#系列 / 核心C# / 编译参数

编译参数 编译控制台应用程序 csc 源文件.cs 编译Windows应用程序 csc /t:winexe 源文件.cs 编译类库应用程序 csc /t:libray 源文件.cs 编译引用类库的应用程序 csc 源文件.cs /r 类库文件.dll

100行代码实现最简单的基于FFMPEG+SDL的视频播放器(SDL1.x)【转】

转自:http://blog.csdn.net/leixiaohua1020/article/details/8652605 版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[-] 简介 流程图 simplest_ffmpeg_player标准版代码 simplest_ffmpeg_player_suSU版代码 结果 FFMPEG相关学习资料 补充问题 ===================================================== 最简单的基于FFmp

最简单的基于FFMPEG+SDL的视频播放器 ver2 (採用SDL2.0)

===================================================== 最简单的基于FFmpeg的视频播放器系列文章列表: 100行代码实现最简单的基于FFMPEG+SDL的视频播放器(SDL1.x) 最简单的基于FFMPEG+SDL的视频播放器 ver2 (採用SDL2.0) 最简单的基于FFmpeg的解码器-纯净版(不包括libavformat) 最简单的基于FFMPEG+SDL的视频播放器:拆分-解码器和播放器 最简单的基于FFMPEG的Hellowor

chromium浏览器开发系列第二篇:如何编译最新chromium源码

说一下为什么这么晚才发第二篇,上周和这周department的工作太多了,晚上都是十点半从公司出发,回家以后实在没有多余的精力去摸键盘了.所以请大家包涵! 上期回顾: chromium源码下载: 1.找个靠谱的vpn(我试过了,网上说的不用vpn拿代码的都不靠谱): 2.获取depot_tools,解压,设置环境变量; 3.gclient获取python和git,svn,设置环境变量: 4.fetch–nohooks chromium –nosvn=true 获取源码: 5.gclientsyn

Linux网站架构系列之Mysql—-部署篇

 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle公司.MySQL所使用的SQL语言是用于访问数据库的最常用标准化语言.由于其体积小.速度快.总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择MySQL作为网站数据库.由于其社区版的性能卓越,搭配PHP和Apache可组成良好的开发环境.本篇将为大家讲解mysql的简单部署. mysql的分为四个版本: Alpha版:一般只在软件开发公司内部运行,不对外公开. Beta版:完全功能的开发和