【问题标题】:trouble with slick 2d unicode font光滑的 2d unicode 字体有问题
【发布时间】:2014-02-19 09:09:56
【问题描述】:

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

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

而不是这个

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

我可以用光滑的正面朝上画弦但是我正在构建的游戏使用这个系统

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

【问题讨论】:

    标签: java opengl rendering lwjgl


    【解决方案1】:

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

    您也不需要拨打glDisable(GL_DEPTH_TEST);。深度测试默认关闭。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-03-08
      • 1970-01-01
      • 2016-10-12
      • 1970-01-01
      • 1970-01-01
      • 2017-07-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多