【问题标题】:Slick2D UnicodeFont drawstring gets rid of rest of screenSlick2D UnicodeFont 拉绳摆脱了屏幕的其余部分
【发布时间】:2016-07-09 21:03:41
【问题描述】:

我无法确定为什么使用UnicodeFont.drawString() 会导致在LWJGL 应用程序中呈现到屏幕上的任何其他内容消失的任何可能原因。在我的例子中,程序应该绘制一个三角形和一些文本,只是为了测试一下,但实际上三角形在消失之前只显示一个帧,只留下要显示的文本。如果删除 drawString() 调用,三角形将正常显示。

我设置字体如下:

        UnicodeFont font = new UnicodeFont(new java.awt.Font("Times New Roman", java.awt.Font.PLAIN, 24));
        font.getEffects().add(new ColorEffect(java.awt.Color.WHITE));
        font.addAsciiGlyphs();
        try {
            font.loadGlyphs();
        } catch (SlickException e) {
            e.printStackTrace();
        }

然后在渲染循环中调用这个:

        glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
        glClearColor(0, 0, 0, 0);

        glColor3f(1, 1, 1);

        glEnableClientState(GL_VERTEX_ARRAY);
        glBindBuffer(GL_ARRAY_BUFFER, fbid);
        glVertexPointer(2, GL_FLOAT, 0, 0);

        glEnableClientState(GL_COLOR_ARRAY);
        glBindBuffer(GL_ARRAY_BUFFER, fbid2);
        glColorPointer(3, GL_FLOAT, 0, 0);

        glDrawArrays(GL_TRIANGLES, 0, 4);
        font.drawString(100, 300, "Test");

        glBindBuffer(GL_ARRAY_BUFFER, 0);
        glDisableClientState(GL_VERTEX_ARRAY);
        glDisableClientState(GL_COLOR_ARRAY);

        DisplayManager.update();

【问题讨论】:

    标签: java opengl rendering lwjgl slick2d


    【解决方案1】:

    所以看起来我的问题源于启用/禁用纹理的混乱。我通过在渲染循环的开头添加以下内容来解决它:

    glDisable(GL_BLEND);
    

    并在调用drawString(...)之前添加:

    glEnable(GL_BLEND);
    glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA):
    

    【讨论】:

      猜你喜欢
      • 2013-01-10
      • 1970-01-01
      • 2016-11-14
      • 1970-01-01
      • 1970-01-01
      • 2017-02-20
      • 2021-04-05
      • 2017-05-11
      • 1970-01-01
      相关资源
      最近更新 更多