【发布时间】:2021-07-28 19:16:59
【问题描述】:
要使用 OpenGL 渲染文本,一种常见的解决方案是将字符打包到一个纹理中,例如 512x512,然后使用一次绘制调用渲染字符串。但是,如果我们使用大量的 unicode 字符,如何处理纹理不能适合所有字符的情况?字符串需要使用不同的纹理。如何处理?
【问题讨论】:
-
鉴于 OpenGL 4.6,阵列纹理必须支持的最小尺寸是 2048 层 2048x2048 纹理。对于 64x64 像素的字符大小,超过 200 万个字符。
-
然后,您可以选择:使纹理更大,或使用更多纹理。选项似乎很明显。你对什么感到困惑?
-
一个不明显的选择是采用 4 通道纹理并在每个通道中存储完全不同的 1 通道数据,这样您就可以有效地获得 4 倍的纹理空间,只要您不这样做想储存颜色。
-
@user253751 这是个好主意。我真的不知道我刚刚开始文本渲染,这对我来说有点不清楚。所以 OpenGL 可以毫无问题地绑定非常大的纹理,我认为极限像 4k 最大值一样低。