Java-显示文本OpenGL

Java-显示文本OpenGL,java,opengl,drawstring,Java,Opengl,Drawstring,我正在关注一个关于用OpenGL在Java中制作rpg的youtube教程 现在我正在慢慢进步,而且还没有GUI类型的教程,所以我想添加一些文本来说明我的统计数据和其他内容 这是我代码的主要类 package com.base.engine; import static org.lwjgl.opengl.GL11.GL_COLOR_BUFFER_BIT; import static org.lwjgl.opengl.GL11.GL_DEPTH_TEST; import static org.l

我正在关注一个关于用OpenGL在Java中制作rpg的youtube教程

现在我正在慢慢进步,而且还没有GUI类型的教程,所以我想添加一些文本来说明我的统计数据和其他内容

这是我代码的主要类

package com.base.engine;

import static org.lwjgl.opengl.GL11.GL_COLOR_BUFFER_BIT;
import static org.lwjgl.opengl.GL11.GL_DEPTH_TEST;
import static org.lwjgl.opengl.GL11.GL_MODELVIEW;
import static org.lwjgl.opengl.GL11.GL_PROJECTION;
import static org.lwjgl.opengl.GL11.glClear;
import static org.lwjgl.opengl.GL11.glClearColor;
import static org.lwjgl.opengl.GL11.glDisable;
import static org.lwjgl.opengl.GL11.glLoadIdentity;
import static org.lwjgl.opengl.GL11.glMatrixMode;
import static org.lwjgl.opengl.GL11.glOrtho;

import java.util.ArrayList;

import org.lwjgl.LWJGLException;
import org.lwjgl.input.Keyboard;
import org.lwjgl.opengl.Display;
import org.lwjgl.opengl.DisplayMode;
import org.lwjgl.opengl.GL11;

import com.base.game.GUI;
import com.base.game.Game;
import com.base.game.Time;

public class Main {

    public static Game game;
    private static GUI gui;
    public static void main(String[] args){
        initDisplay();
        initGL();

        initGame();
        gui = new GUI("i");
        gameLoop();

        cleanUp();
    }

    public static ArrayList<GameObject> sphereCollide(float x, float y, float radius)
    {
        return game.sphereCollide(x, y, radius);
    }

    public static ArrayList<GameObject> rectangleCollide(float x1, float y1, float x2, float y2)
    {
        return game.rectangleCollide(x1,y1,x2,y2);
    }

    public static void initGame(){
        game = new Game();
    }


    public static void getInput(){
        game.getInput();
    }

    public static void update(){
        game.update();
    }

    public static void render(){

        glClear(GL_COLOR_BUFFER_BIT);
        glLoadIdentity();

        game.render();
        gui.drawText("Welcome to the jungle!");
        Display.update();
        Display.sync(60);

    }

    public static void cleanUp(){
        Display.destroy();
        Keyboard.destroy();
    }

    public static void gameLoop(){
        Time.init();
        while(!Display.isCloseRequested())
        {
            Time.update();
            getInput();
            update();
            render();
        }
    }

    public static void initGL(){
        glMatrixMode(GL_PROJECTION);
        glLoadIdentity();
        glOrtho(0, Display.getWidth(), 0, Display.getHeight(), -1, 1);
        glMatrixMode(GL_MODELVIEW);
        glDisable(GL_DEPTH_TEST);

        glClearColor(0, 0, 0, 0);
        glDisable(GL11.GL_TEXTURE_2D);

    }

    public static void initDisplay(){

        try {
            Display.setDisplayMode(new DisplayMode(800,600));
            Display.create();
            Keyboard.create();
            Display.setVSyncEnabled(true);
        } catch (LWJGLException e) {
            e.printStackTrace();
        }
    }

}
现在,这项工作在一个自。它在屏幕上添加了一些内容,但没有添加文本,而是添加了一个黄色框。没有文本

GL11.glEnable(GL11.GL_BLEND);
GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);

那应该行。

那么,你在哪里调用你的
drawText
方法呢?在游戏结束后的render方法中。render();
GL11.glEnable(GL11.GL_BLEND);
GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);