12个版本

0.3.0 2019年1月20日
0.2.1 2019年1月12日
0.1.8 2018年3月22日

#29 in 渲染引擎

30 每月下载次数

MIT 许可证

235KB
4.5K SLoC

GLerminal,一个OpenGL终端

Build Status Docs Crates.io

阅读我们的 行为准则 并加入我们的 Discord服务器 如果你想聊天!

一个从头开始用OpenGL制作的轻量级终端。
使用这个终端,你可以制作你一直想要的终端应用程序或游戏,但这个终端的外观对每个人来说都是一样的,因为它是用OpenGL制作的,不使用电脑的原生终端!

当前支持的功能包括

  • 在终端内移动光标
  • 更改前景和背景颜色为你想要的任何颜色!
  • 抖动文本
  • 一个文本解析器,它将使你轻松地编写你想要的内容,并使其看起来很酷!
    • 可解析的文本示例: "Hello, [fg=red]this is red[/fg] and [shake=1.0]this is shaking[/shake]."
  • 在彼此之上绘制多个文本缓冲区(文本网格)
  • 一个菜单系统,允许轻松创建和使用菜单来选择和按下东西!(见文档了解更多)
    • 需要启用 menu_systems 可选功能
  • 写入你字体支持的16位以内的任何字符

注意:需要OpenGL 3.3+支持

目录

如何使用

详细的文档可以在: docs.rs 找到。

只需将以下行添加到您的 Cargo.toml

[dependencies]
glerminal = "0.3"

然后使用这个crate非常简单

extern crate glerminal; // Not required if running 2018 edition

use glerminal::terminal::TerminalBuilder;
use glerminal::text_buffer::TextBuffer;

fn main() {
    let terminal = TerminalBuilder::new()
        .with_title("Hello GLerminal!")
        .with_dimensions((1280, 720))
        .build();
    let mut text_buffer;
    match TextBuffer::create(&terminal, (80, 24)) {
        Ok(buffer) => text_buffer = buffer,
        Err(error) => panic!(format!("Failed to initialize text buffer: {}", error)),
    }

    text_buffer.write("Hello, GLerminal!");
    terminal.flush(&mut text_buffer);

    while terminal.refresh() {
        terminal.draw(&text_buffer);
    }
}

What the example looks like

自定义字体?

GLerminal附带的自定义字体是 Source Code Pro 的渲染,并包含一些更流行的Unicode块,以节省最终产品(默认字体编译到库中)的空间。
以下块包含在默认字体中

要创建自定义字体,您必须使用 BMFont 标准 / .fnt.sfl,并且可以生成此类文件的软件是 BMFont(只能生成 .fnt),或 Fontbuilder(可以生成两者)。
字体图像需要是 RGBA PNG。

建议使用 Fontbuilder,因为(至少经过一些测试)由 BMFont(及其抗锯齿)生成的 png 字体图像与 Fontbuilder 相比质量较差,尽管 Fontbuilder 在 Windows 设备上可能难以构建(但可以使用 MinGW)。

注意 如果使用 Fontbuilder,强烈建议使用 此分支,因为它包含对 .sfl 字体导出的关键修复。

之后,建议查看 glerminal 字体文档,了解如何加载自定义字体以供使用。

贡献 & 行为准则

欢迎您为此项目做出贡献,但在做之前请查看 贡献指南

仓库中还可以找到行为准则,见 CODE_OF_CONDUCT.md,在与社区互动之前请查看。

许可证

此软件包根据 MIT 许可证 的条款分发。
此软件包还使用名为 Source Code Pro 的字体作为默认字体,该字体根据 SIL OFL 版本 1.1 的条款分发。

依赖关系

~3–13MB
~167K SLoC