出于某种原因,当我尝试使用Slick的UnicodeFont类打印出一个字符串时,它是颠倒的。
(注意:我也在使用LWJGL,但我不认为它干扰了光滑的尝试。)
初始化代码:
GL11.glMatrixMode(GL11.GL_PROJECTION);
GL11.glLoadIdentity();
GL11.glOrtho(0, Display.getWidth(), 0, Display.getHeight(), 1, -1);
GL11.glMatrixMode(GL11.GL_MODELVIEW);
GL11.glEnable(GL11.GL_DEPTH_TEST);
GL11.glEnable(GL11.GL_TEXTURE_2D);
GL11.glEnable(GL11.GL_BLEND);
try {
normalFont = new UnicodeFont("res/fonts/visitor.ttf", 15, false, false);
normalFont.addAsciiGlyphs();
normalFont.addGlyphs(400, 600);
normalFont.getEffects().add(new ColorEffect());
normalFont.loadGlyphs();
} catch (SlickException e) {
e.printStackTrace();
}
绘制代码:
normalFont.drawString(10f, 740f, "HELLO WORLD!");
有谁知道为什么我的字符串被颠倒了?
答案 0 :(得分:5)
我找到了答案。我需要改变这个:
GL11.glOrtho(0, Display.getWidth(), 0, Display.getHeight(), 1, -1);
对此:
GL11.glOrtho(0, Display.getWidth(), Display.getHeight(), 0, 1, -1);
答案 1 :(得分:3)
快速了解你的字体无法正常工作的原因(如果你还不知道),glOrtho被称为:
glOrtho(double left, double right, double bottom, double top, double zNear, double zFar)
。
这就是说,你将底部设置为0,它应该设置为显示器的高度或必要时设置自定义底部,这就是为什么文本面向屏幕顶部或者说是绘制的原因上下。