首页 > 其他分享 >LibGdx 游戏引擎 freetype 使用指南

LibGdx 游戏引擎 freetype 使用指南

时间:2023-07-28 10:37:57浏览次数:50  
标签:freetype font badlogic gdx LibGdx import 使用指南 com public


网上大多数的Libgdx文档,使用的版本都是0.9X的时候留下的,1.X版本的比较少。freetype在1.X时使用发生发生了变化,写一下变化。


本人使用的是Libgdx 1.6版本。

首先给两个传送门,可以去Git上看官方的wiki。

官方的freetype说明
https://github.com/libgdx/libgdx/wiki/Gdx-freetype
官方的freetype样例
https://github.com/libgdx/libgdx/blob/master/tests/gdx-tests/src/com/badlogic/gdx/tests/extensions/InternationalFontsTest.java

下面是两端代码的比较
0.9X版本

package com.example.mylibgdxfont03;

import com.badlogic.gdx.ApplicationListener;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.Color;
import com.badlogic.gdx.graphics.GL10;
import com.badlogic.gdx.graphics.g2d.BitmapFont;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
import com.badlogic.gdx.graphics.g2d.freetype.FreeTypeFontGenerator;
import com.badlogic.gdx.graphics.g2d.freetype.FreeTypeFontGenerator.FreeTypeBitmapFontData;

public class MyGame implements ApplicationListener {
    private BitmapFont font;

    private FreeTypeFontGenerator generator;

    private FreeTypeBitmapFontData fontData;

    private SpriteBatch batch;

    @Override
    public void create() {
        generator = new FreeTypeFontGenerator(Gdx.files.internal("testfont.ttf"));

        fontData = generator.generateData(25, generator.DEFAULT_CHARS
                + "晚风把荣华吹散,名利是如此浅薄。—我一条寻水的鱼!", false);// 这里需要把你要输出的字,全部写上,前提是不能有重复的字。

        font = new BitmapFont(fontData, fontData.getTextureRegion(), false);

        font.setColor(Color.PINK);

        batch = new SpriteBatch();

    }

    @Override
    public void dispose() {
        font.dispose();
        generator.dispose();
        batch.dispose();
    }

    @Override
    public void render() {
        Gdx.gl.glClearColor(1, 1, 1, 1);
        Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
        batch.begin();
        font.drawMultiLine(
                batch,
                "Hello Everyone: \n \n晚风把荣华吹散,\n名利是如此浅薄。",
                50, 220);
        font.draw(batch, "——我是一条寻水的鱼!", 150, 90);

        batch.end();
    }

    @Override
    public void resize(int width, int height) {
    }

    @Override
    public void pause() {
    }

    @Override
    public void resume() {
    }

}
摘自 http://m.blog.csdn.net/blog/yangyu20121224/9182243

1.6版本的代码

package com.mygdx.game;

import com.badlogic.gdx.ApplicationAdapter;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.GL20;
import com.badlogic.gdx.graphics.g2d.BitmapFont;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
import com.badlogic.gdx.graphics.g2d.freetype.FreeTypeFontGenerator;
import com.badlogic.gdx.graphics.g2d.freetype.FreeTypeFontGenerator.FreeTypeFontParameter;

public class MyGdxGame extends ApplicationAdapter {
    SpriteBatch batch;
    FreeTypeFontGenerator generator;
    FreeTypeFontParameter parameter;
    private BitmapFont font;

    @Override
    public void create () {
        batch = new SpriteBatch();
        generator = new FreeTypeFontGenerator(Gdx.files.internal("SIMKAI.TTF"));
        parameter = new FreeTypeFontParameter();
        parameter.characters = "今天气很好,风和日丽!";
        font = generator.generateFont(parameter);
        generator.dispose();
    }

    @Override
    public void render () {
        Gdx.gl.glClearColor(0, 0, 0, 0);
        Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
        batch.begin();
        font.draw(batch, "今天天气很好,风和日丽!", 100, 100);
        batch.end();
    }

    @Override
    public void dispose() {
        batch.dispose();
        super.dispose();
    }

}

区别在于:
1 、生成FreeType
0.9X 版本的代码

generator.generateData(25, generator.DEFAULT_CHARS
                + "晚风把荣华吹散,名利是如此浅薄。—我一条寻水的鱼!", false);// 这里需要把你要输出的字,全部写上,前提是不能有重复的字。

1.6版本 需要使用FreeTypeFontParameter对象

generator = new FreeTypeFontGenerator(Gdx.files.internal("SIMKAI.TTF"));
parameter = new FreeTypeFontParameter();
parameter.characters = "今天气很好,风和日丽!";

2、使用BitmapFont
0.9X版本代码

font = new BitmapFont(fontData, fontData.getTextureRegion(), false);

1.6版本代码

font = generator.generateFont(parameter);

1.6版本和0.9X版本的freetype差别总结就这些。

另外附上freetype 中FreeTypeFontParameter 的默认参数

/** The size in pixels */
public int size = 16;
/** Foreground color (required for non-black borders) */
public Color color = Color.WHITE;
/** Border width in pixels, 0 to disable */
public float borderWidth = 0;
/** Border color; only used if borderWidth > 0 */
public Color borderColor = Color.BLACK;
/** true for straight (mitered), false for rounded borders */
public boolean borderStraight = false;
/** Offset of text shadow on X axis in pixels, 0 to disable */
public int shadowOffsetX = 0;
/** Offset of text shadow on Y axis in pixels, 0 to disable */
public int shadowOffsetY = 0;
/** Shadow color; only used if shadowOffset > 0 */
public Color shadowColor = new Color(0, 0, 0, 0.75f);
/** The characters the font should contain */
public String characters = DEFAULT_CHARS;
/** Whether the font should include kerning */
public boolean kerning = true;
/** The optional PixmapPacker to use */
public PixmapPacker packer = null;
/** Whether to flip the font vertically */
public boolean flip = false;
/** Whether or not to generate mip maps for the resulting texture */
public boolean genMipMaps = false;
/** Minification filter */
public TextureFilter minFilter = TextureFilter.Nearest;
/** Magnification filter */
public TextureFilter magFilter = TextureFilter.Nearest;


标签:freetype,font,badlogic,gdx,LibGdx,import,使用指南,com,public
From: https://blog.51cto.com/u_13912333/6879019

相关文章

  • linux centos SadTalker使用指南,超级详细
    1.主要按照官方文档操作即可1.1首先安装安装anaconda1.1.1下载anaconda官网地址:FreeDownload|Anaconda wgethttps://repo.anaconda.com/archive/Anaconda3-2023.03-1-Linux-x86_64.sh  1.1.2安装shAnaconda3-2023.03-1-Linux-x86_64.sh 直接默认安装即可......
  • canal-1.1.5 使用指南
    1.canal下载https://github.com/alibaba/canal/releasescanal-1.1.6需要jdk11以上canal-1.1.5需要jdk8以上2.canal使用canal-1.1.5为例2.1开启binlog再my.cnf中加入如下文件,重启sql服务。log-bin=mysql-binbinlog-format=ROWserver_id=1给账户配权限GRANTSELE......
  • 文心千帆:PPT 制作、数字人主播一键开播等数十种应用场景惊艳到我了,下面给出简介和使用
    文心千帆:PPT制作、数字人主播一键开播等数十种应用场景惊艳到我了,下面给出简介和使用指南,快去使用起来吧文心千帆大模型平台是面向企业开发者的一站式大模型开发及服务运行平台。文心千帆不仅提供了包括文心一言底层模型(ERNIE-Bot)和第三方开源大模型,还提供了各种AI开发工具和整......
  • FreeType 控制台渲染字形轮廓笔记
    项目里用到了FreeType解析字体,这里只为了更方便入手FreeType,简单读取字体文件,并在控制台绘制制定字符轮廓,以字符A为例:初始化FreeType,加载字体文件#include<freetype2/ft2build.h>#includeFT_FREETYPE_H#include<iostream>#include<math.h>usingnamespacestd;......
  • Args4J 使用指南
    Args4J是一个用来出来命令行的工具.在实际的项目中用到命令行的并不是很常见,但当真正使用到时,特别是在程序启动时配置一下参数的时候就很有用了,如果参数很多的话,一个一个解析命令行还是比较麻烦的.这时使用Args4J就相当好办了.在本文中我们来看看Args4J的使用,当需要时能提供......
  • SQL简单使用指南
    SQL简单使用指南SQL(结构化查询语言)是一种用于管理和操作关系型数据库的标准化语言。数据库概述数据库是用于存储和组织数据的结构。它由表(表格)组成,每个表都包含多个列和行。以下是SQL中最常用的一些关键术语:表(Table):数据库中的基本组织单位,它由列和行组成。列(Column):表中的......
  • Git命令详细使用指南
    Git命令详细使用指南Git是一种广泛使用的版本控制系统,它可以帮助开发人员跟踪变更、协作项目和有效管理代码仓库。无论你是初学者还是有经验的用户,理解各种Git命令对于高效的代码管理至关重要。安装根据Git官方网站(https://git-scm.com)上提供的说明下载和安装Git。安装完成后,你......
  • Golang 使用FreeType-go进行字体
        FreeType库(http://www.freetype.org/)是一个完全免费(开源)的、高质量的且可移植的字体引擎,它提供统一的接口来访问多种字体格式文件,包括TrueType,OpenType,Type1,CID,CFF,WindowsFON/FNT,X11PCF等。支持单色位图、反走样位图的渲染。    freetype-go就是用g......
  • 关于VS2022---Git使用指南
    第一步 输入对应的地址,并点击创建并推送第二步:添加文件、修改文件、删除文件  点击添加修改项,并推送数据库......
  • 58 KVM工具使用指南-应用 LibcarePlus 热补丁
    58KVM工具使用指南-应用LibcarePlus热补丁本节以原文件foo.c和补丁文件bar.c为例,介绍LibcarePlus热补丁的应用指导。58.1前期准备应用LibcarePlus热补丁之前,需要提前准备好原可执行程序foo、以及热补丁文件foo.kpatch。58.2加载热补丁本节介绍应用LibcarePlus......