如何使用opengl在屏幕上显示任何语言的字符

时间:2016-07-15 07:14:40

标签: opengl

我的要求是在屏幕上显示任何语言的字符串。

目前我们使用opengl来显示英文字符。 相同的API不适用于其他语言。屏幕上显示的是框,而不是字符。

有人可以帮助理解opengl并找到适当的API来显示任何语言的租船人吗?

1 个答案:

答案 0 :(得分:1)

  

目前我们使用opengl来显示英文字符。

不,你没有使用OpenGL。我怎么知道这个?因为OpenGL不进行文本渲染。所有它都是点,线和三角形。

您正在使用某些库,它知道如何使用点,线和三角形绘制字符,然后使用OpenGL完成该工作。您使用的特定库显然不知道如何处理ASCII字符集之外的字符。

当然,重要的不仅仅是这一点。 编码也很重要。最新版本的C ++在程序源中支持 Unicode (因此您可以在字符串文字中编写unicode),但这并不会自动为您的程序提供unicode支持 - 它只是知道如何处理它的编译器,但是这些知识不会自动传递到已编译的程序中。

到目前为止,只有一个操作系统,其中Unicode支持根深蒂固,不需要额外的工作;事实上,为它编写了一种特殊的Unicode编码方式,但不幸的是,这是最常见的操作系统项目之一:Plan9

除了Unicode之外,还有许多其他字符编码方案,它们彼此不兼容,每种方案都用于特定类型的写入。这意味着,在用这种本地化字符集编码的文本中混合来自不同书写系统的字符也是不可能的。因此发明了 uni versal en cod 方案。

您最有可能使用Windows,Linux,BSD,Solaris或MacOS X.在所有这些中,使非ASCII字符工作意味着为您(程序员)提供额外的工作。 MacOS X可能是进入门槛最低的一个操作系统。

以下是您必须自己回答的问题:

  • 使用了什么字符编码(希望是Unicode)?
  • 文本渲染器库是否在该编码中使用了支持代码点?
  • 文本渲染器库是否带有布局引擎(定位字符的东西)或是否需要额外提供?

在可以绘制到OpenGL的现有文本渲染器中,目前Freetype-GL是最强大的;它支持Unicode

https://github.com/rougier/freetype-gl