Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 光滑的2d unicode字体有问题_Java_Opengl_Rendering_Lwjgl - Fatal编程技术网

Java 光滑的2d unicode字体有问题

Java 光滑的2d unicode字体有问题,java,opengl,rendering,lwjgl,Java,Opengl,Rendering,Lwjgl,我已经确定,如果我把正交矩阵坐标系改为 GL11.glOrtho(0,Strings.DISPLAY\u WIDTH,Strings.DISPLAY\u HEIGHT,0,-1,1) 而不是这个 GL11.glOrtho(0,Strings.DISPLAY\u WIDTH,0,Strings.DISPLAY\u HEIGHT,-1,1) 我可以画线与光滑的右侧向上,但游戏im建设使用这个系统 GL11.glOrtho(0, Strings.DISPLAY_WIDTH, 0, Strings.DI

我已经确定,如果我把正交矩阵坐标系改为

GL11.glOrtho(0,Strings.DISPLAY\u WIDTH,Strings.DISPLAY\u HEIGHT,0,-1,1)

而不是这个

GL11.glOrtho(0,Strings.DISPLAY\u WIDTH,0,Strings.DISPLAY\u 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
调用设置平滑渲染,然后渲染字符串。然后再次调用
glOrtho
,但渲染游戏的其余部分
glOrtho
只是告诉OpenGL设置正交投影,以及从屏幕的哪个角落开始渲染。Slick使用左上角,而您使用的是左下角。OpenGL是一个基于状态的机器,所以你必须渲染光滑的东西,切换到新的投影,然后渲染游戏的其余部分

您也不需要调用
glDisable(GL\u DEPTH\u TEST)。默认情况下,深度测试处于关闭状态