光滑的 2D Unicode 字体出现问题



好的,所以我已经确定如果我将我的正交矩阵坐标系更改为

GL11.glOrtho(0, Strings.DISPLAY_WIDTH, Strings.DISPLAY_HEIGHT, 0, -1, 1);

而不是这个

GL11.glOrtho(0, Strings.DISPLAY_WIDTH, 0, Strings.DISPLAY_HEIGHT, -1, 1);

我可以用光滑的右侧朝上画绳子,但是游戏 im 构建使用此系统

GL11.glOrtho(0, Strings.DISPLAY_WIDTH, 0, Strings.DISPLAY_HEIGHT, -1, 1);

Slick 绘制矩阵顶部为 0 的东西,底部是显示器的高度,无论如何我都可以以不同的方式旋转或绘制字符串而无需更改我的游戏坐标系?

这是我的字符串绘图课

private Font javaFont;
private UnicodeFont uniFont;
public TextHandler(int letterSize) {
    this.initHandler(letterSize);
}
private void initHandler(int size) {
    this.javaFont = new Font("Times New Roman", Font.BOLD, size);
    this.uniFont = new UnicodeFont(this.javaFont);
    this.uniFont.getEffects().add(new ColorEffect(java.awt.Color.white));
    this.uniFont.addAsciiGlyphs();
    try {
        this.uniFont.loadGlyphs();
    } catch (SlickException e) {
        e.printStackTrace();
    }
}
public void drawString(String string, float x, float y) {
    this.uniFont.drawString(x, y, string, Color.white);
}

和我的 openGl 初始化代码,如果有帮助的话

    GL11.glMatrixMode(GL11.GL_PROJECTION);
    GL11.glLoadIdentity();
    GL11.glOrtho(0, Strings.DISPLAY_WIDTH, 0, Strings.DISPLAY_HEIGHT, -1, 1);
    GL11.glMatrixMode(GL11.GL_MODELVIEW);
    GL11.glEnable(GL11.GL_TEXTURE_2D);
    GL11.glClearColor(0, 0, 1, 0);
    GL11.glDisable(GL11.GL_DEPTH_TEST);  

是的,您可以设置一个渲染系统,其中第一个glOrtho调用设置 Slick 渲染,然后渲染字符串。然后再次调用glOrtho,但渲染游戏的其余部分。 glOrtho只是告诉OpenGL设置正交投影,以及从屏幕的哪个角落开始渲染。Slick使用左上角,而您使用左下角。OpenGL是基于状态的机器,因此您必须渲染光滑的东西,切换到新的投影,然后渲染游戏的其余部分。

您也不需要该电话来glDisable(GL_DEPTH_TEST);.默认情况下,深度测试处于关闭状态。

最新更新