当前位置: 首页 > 知识库问答 >
问题:

LWJGL -加载字体后一切都没了

邴子实
2023-03-14

当我尝试在屏幕上显示一些文本时,我遇到了一个奇怪的问题。我按照本教程Slick Util - TrueType Fonts for LWJGL进行了操作。文本已正确显示,但其他所有内容都消失了。即使不呈现任何文本,也会发生这种情况。当我删除代码以加载字体时,它将恢复正常。

这是我的代码:(当我有这行代码时,矩形不会显示:this.font=this.loadDefaultFont(30);)

import static org.lwjgl.opengl.GL11.GL_BLEND;
import static org.lwjgl.opengl.GL11.GL_COLOR_BUFFER_BIT;
import static org.lwjgl.opengl.GL11.GL_MODELVIEW;
import static org.lwjgl.opengl.GL11.GL_ONE_MINUS_SRC_ALPHA;
import static org.lwjgl.opengl.GL11.GL_PROJECTION;
import static org.lwjgl.opengl.GL11.GL_QUADS;
import static org.lwjgl.opengl.GL11.GL_SRC_ALPHA;
import static org.lwjgl.opengl.GL11.glBegin;
import static org.lwjgl.opengl.GL11.glBlendFunc;
import static org.lwjgl.opengl.GL11.glClear;
import static org.lwjgl.opengl.GL11.glClearColor;
import static org.lwjgl.opengl.GL11.glColor4f;
import static org.lwjgl.opengl.GL11.glEnable;
import static org.lwjgl.opengl.GL11.glEnd;
import static org.lwjgl.opengl.GL11.glLoadIdentity;
import static org.lwjgl.opengl.GL11.glMatrixMode;
import static org.lwjgl.opengl.GL11.glOrtho;
import static org.lwjgl.opengl.GL11.glVertex2i;

import java.awt.Font;

import org.lwjgl.LWJGLException;
import org.lwjgl.opengl.Display;
import org.lwjgl.opengl.DisplayMode;
import org.newdawn.slick.Color;
import org.newdawn.slick.TrueTypeFont;

public class TrueTypeFontDemo {
    private TrueTypeFont font;

    public TrueTypeFontDemo() {
        try {
            Display.setDisplayMode(new DisplayMode(800, 600));
            Display.setTitle("TrueTypeFont Demo");
            Display.create();
        } catch (LWJGLException e) {
            e.printStackTrace();
        }

        glMatrixMode(GL_PROJECTION);
        glLoadIdentity();
        glOrtho(0, 800, 600, 0, 1, -1);
        glMatrixMode(GL_MODELVIEW);
        glEnable(GL_BLEND);
        glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);

        this.font = this.loadDefaultFont(30);

        while (!Display.isCloseRequested()) {
            glClearColor(1.0f, 1.0f, 1.0f, 0.0f);
            glClear(GL_COLOR_BUFFER_BIT);

            this.font.drawString(100, 100, "Hello world", Color.red);

            glColor4f(1.0f, 0.0f, 0.0f, 0.5f);
            glBegin(GL_QUADS);
            {
                glVertex2i(500, 500);
                glVertex2i(500, 50);
                glVertex2i(600, 50);
                glVertex2i(600, 500);
            }
            glEnd();

            Display.update();
            Display.sync(60);
        }

        Display.destroy();
    }

    private TrueTypeFont loadDefaultFont(int size) {
        // load a default java font
        Font awtFont = new Font("Times New Roman", Font.PLAIN, size);
        return new TrueTypeFont(awtFont, false);
    }

    public static void main(String[] args) {
        new TrueTypeFontDemo();
    }
}

共有1个答案

伍光济
2023-03-14

如果您有Slick-Util作为库,请尝试在每次调用后添加TextureImpl.bindNone();以呈现文本。

 类似资料:
  • 我使用lwjgl已经有一段时间了,最近我决定从固定的函数管道切换到着色器。所以,当我开始我的程序的第一件事,我设置了ContextAttrib(3,2 ),所以我将使用GL 3.2。问题是,当我打开更高版本的GL时,很多功能变得不受支持。在切换到更高的GL之前,我已经使用Slick的字体(TrueTypeFont)来呈现我需要的文本,但是现在TrueTypeFont的drawString方法本身有

  • 我试图使用opengl在lwjgl显示器上显示自定义字体的文本。目前,我正在使用自定义位图字体类从png文件加载字体,并以与tileset相同的方式显示它们。它工作正常,但当我将文本绘制到屏幕上时,字符之间的间距完全不同,因为字母M比字母i宽得多,并且所有字符的宽度都不同。有没有办法检测每个字符的宽度?或者是否有任何特定于lwjgl字体的库?有一种方法可以使用slick2d来实现,但加载整个库只是

  • 问题内容: 我在我的网站上使用了一些服装字体,但是我遇到了一个问题,因为它没有被加载,因此我无法找出问题所在,这是代码: 该作品的。我也试图让每个人都不同,但没有奏效。 问题答案: 每个字体必须有一个@ font-face声明: 不需要单引号。 如果要为IE9使用自定义字体,则还需要提供“.eot”字体文件。 编辑:好的,不同的浏览器有不同的字体实现方式: 您可能还需要将以下类型添加到.htacc

  • 这是我的pb。 我有一个实体游戏和一个实体控制台 这是一个多个关联。 为了提高性能,我在同一查询中加载游戏和控制台,如下所示: 当我使用

  • 问题内容: 我正在使用@ font- face将字体嵌入到我的网站中。首先,文本将作为系统默认值呈现,然后(假定字体文件已加载)正确的字体将在几分之一秒后呈现。有没有一种方法可以通过延迟页面渲染直到加载字体或类似字体之后来最小化/消除此延迟。 问题答案: 这取决于浏览器的行为方式。 首先,您的@font在哪里声明?它是内联到HTML,是在页面上的CSS表中声明,还是(希望)在外部CSS表中声明?

  • 在我将所有本机库链接到每个引用库并按照http://ninjacave.com/lwjglwitheclipse的说明操作之后,该错误仍然存在