用 SDL2 在屏幕上打印文本
打印完图片,是时候打印文字了。这里引用了SDL的字体扩展库,SDL2_ttf.lib,需要包含相应的头文件。
环境:SDL2 + VC++2015
下面的代码将在窗口打印一段文字,并对相应的操作做出响应。
这次把错误处理给精简掉了,代码看起来更清爽。
#include <iostream>
#include "SDL.h"
#include "SDL_ttf.h" int main(int argc, char** argv)
{
//屏幕宽度
const int SCREEN_WIDTH = ;
const int SCREEN_HEIGHT = ;
//初始化SDL
SDL_Init(SDL_INIT_EVERYTHING);
//初始化字体库
TTF_Init();
//创建窗口
SDL_Window *window = SDL_CreateWindow("Font Test",
SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED,
SCREEN_WIDTH, SCREEN_HEIGHT, SDL_WINDOW_SHOWN);
//创建渲染器
SDL_Renderer *renderer = SDL_CreateRenderer(window, -,
SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC); //打开字体
TTF_Font *font = TTF_OpenFont("XHei.TTC", );
//文本转表面
SDL_Color color = { , , };
SDL_Surface *surf = TTF_RenderText_Blended(font, "Cool, Cooler, Coolest!", color);
//表面转纹理
SDL_Texture *text = SDL_CreateTextureFromSurface(renderer, surf);
//释放资源
SDL_FreeSurface(surf);
TTF_CloseFont(font); bool quit = false;
SDL_Event e;
//主循环
while (!quit)
{
//事件栈轮询
while (SDL_PollEvent(&e))
{
//按右上角的X或点鼠标退出
if (e.type == SDL_QUIT || e.type == SDL_MOUSEBUTTONDOWN) quit = true;
//清空渲染器
SDL_RenderClear(renderer);
//渲染字体
SDL_RenderCopy(renderer, text, NULL, NULL);
//呈现渲染器
SDL_RenderPresent(renderer);
}
} //释放资源
SDL_DestroyTexture(text);
SDL_DestroyRenderer(renderer);
SDL_DestroyWindow(window); SDL_Quit(); return ;
}
用 SDL2 在屏幕上打印文本的更多相关文章
- Javascript技巧实例精选(3)—用字符在屏幕上打印金字塔
用Javascript实现用★字符在屏幕上打印金字塔 >>点击这里下载完整html源码<< 这是最后的截图 这是相应的Javascript源码 //动态创建表格 var s=' ...
- 编写一个程序,开启 3 个线程,这三个线程的 ID 分别为 A、B、C,每个线程将自己的 ID 在屏幕上打印 10 遍,要求输出的结果必须按顺序显示。如:ABCABCABC…… 依次递归
import java.util.concurrent.locks.Condition; import java.util.concurrent.locks.Lock; import java.uti ...
- 第四题(迅雷笔试题):编写一个程序,开启3个线程,这3个线程的ID分别为A、B、C,每个线程将自己的ID在屏幕上打印10遍,要求输出结果必须按ABC的顺序显示;如:ABCABC….依次递推。
#include <iostream> #include <stdlib.h> #include <pthread.h> using namespace std; ...
- 现有1~100 共一百个自然数,已随机放入一个有98个元素的数组a[98].要求写出一个尽量简单的方案找出没有被放入数组的那2个数,并在屏幕上打印这2个数
void test7() { try { ]; ]; ]; ; ; int i; ; i < num.Length; i++) { num[i] = i + ; num1[i] = i + ;/ ...
- IOS UIView 01-View开始深入 绘制像素到屏幕上
注:本人是翻译过来,并且加上本人的一点见解. 前言 一个像素是如何绘制到屏幕上去的?有很多种方式将一些东西映射到显示屏上,他们需要调用不同的框架.许多功能和方法的结合体.这里我们大概的看一下屏幕之后发 ...
- logging日志管理--将日志打印在屏幕上
# -*- coding: cp936 -*- # test.py #http://blog.chinaunix.net/uid-27571599-id-3492860.html #logging日志 ...
- __str__被print函数调用,目的是打印类的内容到屏幕上
# -*- coding: utf-8 -*- #python 27 #xiaodeng #__str__被print函数调用,目的是打印类的内容到屏幕上 class APIError(): def ...
- Snort里如何将一个tcpdump格式的二进制文件读取打印到屏幕上(图文详解)
不多说,直接上干货! 关于tcpdump二进制格式,这个基本概念不说. 支持tcpdump二进制格式的嗅探器工具,这里我说两个:tcpdump或者ethereal. [root@datatest Se ...
- jsp中使用Servlet查询SQLSERVER数据库中的表的信息,并且打印在屏幕上
jsp中使用Servlet查询SQLSERVER数据库中的表的信息,并且打印在屏幕上 1.JavaBean的使用 package com.zheng; public class BookBean { ...
随机推荐
- Maven生成项目文档
Maven项目可以通过maven-site-plugin插件生成项目文档,无论什么项目都可以生成. 执行命令: mvn site 生成完成的输出目录在${basedir}/target/site文件夹 ...
- java多线程异步执行
import java.util.concurrent.Callable; import java.util.concurrent.ExecutionException; import java.ut ...
- 【Windows7】win7启动 报错 AutoIt错误,不能打开脚本文件
解决方法: 1.开始-->运行-->regedit 2.按照下图 3.
- 【面试 struts2】【第三篇】struts2的问题
1.struts2的工作流程 1>客户端浏览器发出HTTP请求. 2>根据web.xml配置,该请求被FilterDispatcher接收 3>根据struts.xml配置,找到需要 ...
- python各种类型转换
python各种类型转换 学习了:https://blog.csdn.net/shanliangliuxing/article/details/7920400 https://blog.csdn.ne ...
- 【LeetCode】Generate Parentheses 解题报告
[题目] Given n pairs of parentheses, write a function to generate all combinations of well-formed pare ...
- struts开发<在eclipse中配置struts. 一>
1.获取struts的jar包 1.1首先在http://struts.apache.org/download.cgi#struts23163这里下载 struts的文件包(选择struts-2.3. ...
- python web框架企业实战具体解释(第六期)\第三课时-ajax&jquery&webpy
main.py __author__ = 'Liao' import web import time urls = ( '/gettime','gettime', '/(.*)', 'hello' ) ...
- 淘宝数据库OceanBase SQL编译器部分 源码阅读--生成物理查询计划
淘宝数据库OceanBase SQL编译器部分 源码阅读--生成物理查询计划 SQL编译解析三部曲分为:构建语法树,制定逻辑计划,生成物理执行计划.前两个步骤请参见我的博客<<淘宝数据库O ...
- netty5源代码探索(一)----ByteBuf初探
Netty的各种简单介绍,总体架构就不介绍了,假设大家感觉的确须要,给我留言我再追加. 这里再推广一个自己做得netty+spring的集成方案,优化netty配置启动,并提供基础server搭建的配 ...