我已经制作了一个GUI,它包含多个组件,现在我需要用文本填充这些组件。
我的规格:
我怎么能用java做这件事?
发布于 2012-05-04 17:36:02
我会考虑使用SVG,特别是蜡染来管理字体。我自己也做了很多事情,这有点像一个学习曲线。在担心性能之前,我准备简单地开始并找出您需要的特定特性。但在你给出更清晰的想法之前,我不确定我们还能帮上什么忙
发布于 2012-05-04 21:42:39
您有三个选项:位图字体、纹理字体和矢量字体。
只有当您只想为2DGUI呈现文本时,位图字体才是有用的。但是,如果使用位图字体,则无法进行反别名。另一方面,它们非常容易使用,而且呈现速度很快。
纹理字体允许反混叠,但同样,他们是最适合2D图形界面。如果你想在世界空间渲染文本,你会得到很多的工件,因为纹理缩放正在发生。要使用纹理字体,您必须创建一个纹理图谱,其中包含要使用的特定字体的每个字符的图像(通常您希望将字符集限制为ASCII,否则纹理将太大)。可以使用AWT创建包含所需所有字符的矩形图像。然后,您可以通过为该字符呈现具有适当纹理坐标的四角体来呈现字符。建议使用亮度α纹理,这样您就可以将其与希望文本出现的颜色混合起来。您可以通过对每个字符使用显示列表和对每个字符串使用可能的显示列表来优化这一点,但是您将遇到kerning等方面的问题。
向量字体给你最好的结果,如果你想要渲染你的文本在世界空间。他们会给你完美的字体渲染,包括。但它们渲染起来更贵。我通常的方法是为我想要呈现的每一个字符串创建一个路径(使用AWT),平坦该路径,然后使用GLU tesselator跟踪它。这将给你一堆三角形,三角形条和三角形风扇,你可以把它放在一个VBO中,以达到最佳的性能。然后,您可以通过为VBO发出适当的呈现命令来呈现该字符串。您可以通过为每个字符串使用一个显示列表来进一步优化这一点。这样,每个字符串只需发送一个命令,当然,这仍然比其他方法更昂贵。
https://stackoverflow.com/questions/10453263
复制相似问题