lwjgl和slick-util渲染文本

时间:2013-04-26 03:58:44

标签: java opengl graphics lwjgl slick2d

让我先说一下,我无法在互联网上的任何地方找到Slick2d.jar文件,而且我的项目不一定总是在2d中,所以我更喜欢使用slick-util,因为建议在lwjgl网站上使用。此外我知道TrueTypeFont在slick2d中被折旧,但这是在slick-util中绘制文本的唯一方法

所以我的代码有以下几行:

import java.awt.Font;
import org.newdawn.slick.TrueTypeFont;
import org.newdawn.slick.Color;

...

Font awtFont = new Font("Times New Roman", Font.ITALIC, 24);
font = new TrueTypeFont(awtFont, antiAlias);

...

font.drawString(dim.width/4+10,0, Income, Color.yellow)

...

因为我得到一个大的黄色块我不知道如何解决它。 GL_TEXTURE_2D已启用,我也会执行其他人提到的所有混合调用作为解决方案。

GL11.glEnable(GL11.GL_BLEND);
GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);

3 个答案:

答案 0 :(得分:1)

迟到的答案,但是当我之前搜索TrueTypeFont解决方案时,我无法找到任何内容。

在我的程序中出于各种其他原因调用/绘制前缓冲区和后缓冲区是什么让我搞砸了(并且创建了块而不是文本)。

GL11.glDrawBuffer(GL11.GL_FRONT_AND_BACK);
drawOtherStuff();

无论出于何种原因,如果我只调用/绘制后缓冲区(然后在再次绘制其他内容之前返回前后),drawString()显示正常。

GL11.glDrawBuffer(GL11.GL_BACK);
font.drawString(100, 50, "THE LIGHTWEIGHT JAVA GAMES LIBRARY", Color.yellow);

不知道为什么会这样。也不确定它是否特定于我的问题,但希望它可以作为其他人的临时修复。

答案 1 :(得分:1)

好吧,我距离评论2,所以@ Twister1002“Slick-Util使用Java内置的AWT字体支持来加载字体,所以一定要熟悉AWT的Font类。你可以使用默认构建在java字体或加载外部ttf文件。 Slick-Util库将转换AWT字体,以便它可以与OpenGL一起使用。字体通过光滑的TrueTypeFont类存储和绘制。“

回答你的问题:http://ninjacave.com/slickutil3 这个例子适合我。 至于是什么原因引起你的问题,我看不到你发布的任何内容(用你发布的少量代码)会导致这样的错误。

答案 2 :(得分:0)

您必须使用已下载的Slick.jar文件。所有异常都抛出“SlickExcpetion”。如果您还查看图形方法,它会显示Font类型,但必须是org.newdawn.slick.Font。它不能与AWT一起使用。

我已经学会了使用Slick你必须使用它所有的Slick组件;不是任何一个java。