在LWJGL中使用Slick的Unicodefont绘制字符串

时间:2011-12-26 18:20:45

标签: java unicode fonts awt lwjgl

我正在尝试使用LWJGL和Slick-Library在我的OpenGL窗口中显示一个字符串。

这是我的源代码

import static org.lwjgl.opengl.GL11.GL_COLOR_BUFFER_BIT; import static org.lwjgl.opengl.GL11.GL_DEPTH_BUFFER_BIT; import static org.lwjgl.opengl.GL11.glClear; import java.awt.Color; import java.awt.Font; import org.lwjgl.LWJGLException; import org.lwjgl.opengl.Display; import org.lwjgl.opengl.DisplayMode; import org.newdawn.slick.SlickException; import org.newdawn.slick.UnicodeFont; import org.newdawn.slick.font.effects.ColorEffect; public class test extends Thread { UnicodeFont font; public static void main(String arg[]) { Thread mainthread = new test(); mainthread.start(); } //Constructor public test() { } public void run() { try { Display.setDisplayMode(new DisplayMode(400,400)); Display.setVSyncEnabled(true); Display.create(); } catch (LWJGLException e) { e.printStackTrace(); //TODO Auto-generated catch block } try { font = new UnicodeFont("arial.ttf",1, false, false); } catch (SlickException e1) { e1.printStackTrace();// TODO Auto-generated catch block } font.addAsciiGlyphs(); font.addGlyphs(400, 600); font.getEffects().add(new ColorEffect(java.awt.Color.ORANGE)); try { font.loadGlyphs(); } catch (SlickException e) { e.printStackTrace();// TODO Auto-generated catch block } while(!Display.isCloseRequested()) { font.drawString(0.3f, 0.3f, "Testi"); Display.update(); } Display.destroy(); } }

这就是结果:

http://i.stack.imgur.com/2hBnB.png

我不知道,是什么导致了这一点。 求救!

1 个答案:

答案 0 :(得分:2)

您需要启用GL_TEXTURE_2D和GL_BLEND(使用glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA))才能正确呈现文本。