在OpenGL上使用freetype字体呈现非英语unicode文本时出现问题

在OpenGL上使用freetype字体呈现非英语unicode文本时出现问题,opengl,unicode,fonts,freetype,asianfonts,Opengl,Unicode,Fonts,Freetype,Asianfonts,我目前正在学习NeHe教程第43课()。该代码仅适用于英文文本,而非单一编码语言。幸运的是,我找到了NeHe第43课到的一个链接,找到了另一个相同的教程示例,但只有一个区别:它使用w_char,并且该站点声称您可以在英语以外的语言上运行 所以我尝试一下: freetype::print(our_font, 320, 200, (unsigned short*)L"Active FreeType Text หกโด้กี่ดุ öáæé おはよ。- %7.2f", cnt1); 命名空间free

我目前正在学习NeHe教程第43课()。该代码仅适用于英文文本,而非单一编码语言。幸运的是,我找到了NeHe第43课到的一个链接,找到了另一个相同的教程示例,但只有一个区别:它使用w_char,并且该站点声称您可以在英语以外的语言上运行

所以我尝试一下:

freetype::print(our_font, 320, 200, (unsigned short*)L"Active FreeType Text หกโด้กี่ดุ öáæé おはよ。- %7.2f", cnt1);
命名空间freetype的函数print的第四个参数为*const unsigned short**,因此我键入了它。我还为长字符在双引号字符串前面放了一个L,并为测试目的放了一些亚洲字符

结果是所有的英文文本都可以很好地显示,但所有的泰语字符都变成“[]B[]I[]5H[]8”。这些盒子是方形的。据我所知,这意味着字体没有指定的语言,因此我尝试了其他字体,但所有其他泰国字体都给出了相同的方形框。对于日文字体,它是相同的。所有框及其旁边的一些英文字符。子字符串öáæé渲染得很好,没有任何问题

我忘了什么吗?我们如何在这里显示非英语Unicode语言?

第43课中的print()似乎根本不具备Unicode功能。NeHe所做的只是为前256个ASCII字符创建256个显示列表,不接受UTF8字符串并将其转换为UTF32作为FreeType

<音译成C++ >对我来说已经很好了。< /P>
另外,抓取的副本,以确保所有的都有glyphs。

幸运的是,作者已在其网站上上传了其教程的修改版本(在问题中指定),并使用了wchar\t(在原始版本中,作者使用*const unsigned short**作为打印函数中的参数),允许使用非英语语言。

您可以链接您的NeHe链接吗?