使用SDL_ttf绘制True Type字体
准备
SDL_ttf库
配置dll和lib 我就不细说了可以模仿我demo用cmake配置
头文件放SDL.h同一个目录
sample.ttf SourceSansPro-Regular 字体文件
目的
使用ttf字体文件 进行文字的渲染
也就是使用ttf文件 自定义文字的字体显示
主要绘制一行"Shiver Is Best Awesome"消息文本
初始化,创建窗口、渲染器等
TTF_Init() tif初始化
//Start up SDL and make sure it went ok
if (SDL_Init(SDL_INIT_VIDEO) != 0) {
logSDLError(std::cout, "SDL_Init");
return 1;
}
//Also need to init SDL_ttf
if (TTF_Init() != 0) {
logSDLError(std::cout, "TTF_Init");
SDL_Quit();
return 1;
}
//Setup our window and renderer
SDL_Window* window = SDL_CreateWindow("Lesson 6", SDL_WINDOWPOS_CENTERED,
SDL_WINDOWPOS_CENTERED, SCREEN_WIDTH, SCREEN_HEIGHT, SDL_WINDOW_SHOWN);
if (window == nullptr) {
logSDLError(std::cout, "CreateWindow");
TTF_Quit();
SDL_Quit();
return 1;
}
SDL_Renderer* renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC);
if (renderer == nullptr) {
logSDLError(std::cout, "CreateRenderer");
cleanup(window);
TTF_Quit();
SDL_Quit();
return 1;
}
1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.
载入字体内容并绘制
绘制文字需要:
1.消息文本message
2.字体文件fontFile
3.字体颜色color
4.字体大小fontSize
const std::string resPa
th = getResourcePath("Lesson6");
//We'll render the string "TTF fonts are cool!" in white
//Color is in RGB format
SDL_Color color = { 255, 255, 255, 255 };
SDL_Texture* image = renderText("Shiver is best Aswsome", "..\\..\\res\\06sdl_learn\\sample.ttf", color, 64, renderer);
if (image == nullptr) {
cleanup(image, renderer, window);
TTF_Quit();
SDL_Quit();
return 1;
}
1.2.3.4.5.6.7.8.9.10.11.12.
绘制字体过程:
1.打开字体文件
2.先根据render,message,color 创建Surface
3.使用Surface创建Texture
SDL_Texture* renderText(const std::string& message, const std::string& fontFile, SDL_Color color,
int fontSize, SDL_Renderer* renderer)
{
//Open the font
TTF_Font* font = TTF_OpenFont(fontFile.c_str(), fontSize);
if (font == nullptr) {
logSDLError(std::cout, "TTF_OpenFont");
return nullptr;
}郑州哪家精神病医院好http://www.juenpt.com/
//We need to first render to a surface as that's what TTF_RenderText returns, then
//load that surface into a texture
SDL_Surface* surf = TTF_RenderText_Blended(font, message.c_str(), color);
if (surf == nullptr) {
TTF_CloseFont(font);
logSDLError(std::cout, "TTF_RenderText");
return nullptr;
}
SDL_Texture* texture = SDL_CreateTextureFromSurface(renderer, surf);
if (texture == nullptr) {
logSDLError(std::cout, "CreateTexture");
}
//Clean up the surface and font
SDL_FreeSurface(surf);
TTF_CloseFont(font);
return texture;
}
原文地址:https://www.cnblogs.com/gyshht/p/15225759.html
- ClassLoader究竟为何物?
- Oracle应用实战八(完结)——存储过程、函数+对象曹组
- 动态代理模式原理
- SQL可以正常用,但cmd启动不了mysql,报错[ERROR] unknown variable ;basedir=....问题
- Percona-toolkit的安装和配置(r8笔记第86天)
- 分布式服务框架 Zookeeper
- python--类方法、对象方法、静态方法
- Go语言内存分配器的实现
- Go 语言 数据库操作之链接数据库实现
- 对于tnsping的连接超时的功能补充(r9笔记第3天)
- struts2拦截器源码分析
- Go语言学习(一):hello world
- JAVA基础知识点:内存、比较和Final
- python django 学习(一)数据库 目的根据已有BBS建立新的网站步骤
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Android实现View拖拽跟随手指移动效果
- Android中button的onClick事件几种方法
- Android利用Glide获取图片真正的宽高的实例
- Android 自定义AlertDialog对话框样式
- Android自定义一个图形单点移动缩小的效果
- 详解Android实现购物车页面及购物车效果(点击动画)
- Android利用LitePal操作数据库存取图片
- Android 改变图标原有颜色和搜索框的实例代码
- Android自定义滑动验证条的示例代码
- Android实现图片转高斯模糊以及高斯模糊布局
- android多媒体类VideoView使用方法详解
- Android编程实现短信收发及语音播报提示功能示例
- Android viewpager无限轮播获取网络图片功能
- Android 使用ContentObserver监听数据库内容是否更改
- Android UI中TextView的使用方法