2021SC@SDUSC
Go语言的简单2D游戏库-Ebiten
目录
一、主要函数解析--包text中实现的函数
func Draw
func Draw(dst *ebiten.Image, text string, face font.Face, x, y int, clr color.Color)
Draw 在给定的目标图像 dst 上绘制给定的文本。
face 是文本渲染的字体。(x, y) 表示“点”(句点)位置。这意味着如果给定的文本由单个字符“.”组成,它将位于给定的位置 (x, y)。请注意,这并不代表左上角位置。
clr 是文本渲染的颜色。
如果要调整文本的位置,这些功能很有用:
* text.BoundString:给定文本的渲染边界。
* golang.org/x/image/font.Face.Metrics:face的度量。
'\n' 换行符将以下文本放在下一行。行高基于字体的 Metrics().Height。
用于渲染的字形以最近最少使用的方式缓存。然后旧字形可能会从缓存中逐出。由于缓存容量有限,不能保证所有在 Draw 中给出的符文字形都被缓存。缓存与 CacheGlyphs 共享。
就性能而言,在每一帧用相同的文本和相同的face调用Draw是可以的。
Draw/DrawWithOptions 和 CacheGlyphs 是这样实现的:
Draw = 通过 `(*ebiten.Image).ReplacePixels` 创建字形,并在必要时将它们放入缓存中
+ 通过`(*ebiten.Image).DrawImage`将它们绘制到目的地
CacheGlyphs = 通过`(*ebiten.Image).ReplacePixels` 创建字形并在必要时将它们放入缓存
二、示例代码
package main
import (
"fmt"
"image/color"
"log"
"math/rand"
"strings"