1

出于某种原因,当我尝试使用 Slick 的 UnicodeFont 类打印出一个字符串时,它是颠倒的。

(注意:我也在使用 LWJGL,但我认为它不会干扰 slick 试图做的事情。)

初始化代码:

    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!");

有谁知道为什么我的字符串被颠倒了?

4

2 回答 2

5

我找到了答案。我需要改变这个:

GL11.glOrtho(0, Display.getWidth(), 0, Display.getHeight(), 1, -1);

对此:

GL11.glOrtho(0, Display.getWidth(), Display.getHeight(), 0, 1, -1);
于 2012-08-03T17:14:50.633 回答
3

快速了解一下为什么您的字体不起作用(如果您还不知道), glOrtho 的调用如下:

glOrtho(double left, double right, double bottom, double top, double zNear, double zFar).

话虽如此,您将底部设置为 0,如果需要,它应该设置为显示器的高度或自定义底部,这就是文本面向屏幕顶部的原因,或者更确切地说,是向上绘制的原因向下。

于 2012-12-04T14:33:46.007 回答