首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >LWJGL慢渲染

LWJGL慢渲染
EN

Stack Overflow用户
提问于 2012-05-19 07:21:22
回答 1查看 910关注 0票数 1

我已经做了一个简单的LWJGL程序,它可以在屏幕上显示和呈现文本。我使用Slick-util btw呈现文本。

所以我的问题是,为什么它需要几秒钟的黑屏(或任何透明的颜色)才能加载。有没有办法解决这个问题?我可以隐藏显示,直到它全部呈现吗?这些都是我的问题。下面是我的代码:

代码语言:javascript
复制
package com.survivalpixel.kopis;

import static org.lwjgl.opengl.GL11.GL_MODELVIEW;
import static org.lwjgl.opengl.GL11.GL_PROJECTION;
import static org.lwjgl.opengl.GL11.GL_TEXTURE_2D;
import static org.lwjgl.opengl.GL11.glEnable;
import static org.lwjgl.opengl.GL11.glMatrixMode;
import static org.lwjgl.opengl.GL11.*;
import static org.lwjgl.opengl.GL11.glPopMatrix;
import static org.lwjgl.opengl.GL11.glPushMatrix;

import java.awt.Font; 

import org.lwjgl.LWJGLException;
import org.lwjgl.opengl.Display;
import org.lwjgl.opengl.DisplayMode;
import org.lwjgl.opengl.GL11;
import org.newdawn.slick.TrueTypeFont;
public class Menu {
private int WIDTH = 1080,HEIGHT = 720;
Font font;
TrueTypeFont gamefont;
public static void main(String args[]){
    new Menu();
}
public Menu(){
    try {
        Display.setDisplayMode(new DisplayMode(WIDTH,HEIGHT));
        Display.setResizable(false);
        Display.setTitle("Kopis V.01");
        Display.create();
    } catch (LWJGLException e) {

    }

    initGL();
    init();


    while(!Display.isCloseRequested()){
        glPopMatrix();

        glClear(GL11.GL_COLOR_BUFFER_BIT);

        drawString("This is a test",100,100);

        Display.update();
        Display.sync(100);
        glPushMatrix();
    }
    Display.destroy();
    System.exit(0);
}
private void initGL() {
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    glOrtho(0, 1080, 720, 0, -1, 1);
    glMatrixMode(GL_MODELVIEW);
    glClearColor(0, 0, 0, 0);
    glEnable(GL_BLEND);
    glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);


}
private void init() {

    font = new Font("times new roman", Font.BOLD,12);
    gamefont = new TrueTypeFont(font, false);


}
public void drawString(String s,int x, int y){
    gamefont.drawString(x, y, s);
}
}
EN

回答 1

Stack Overflow用户

发布于 2012-09-15 05:02:50

正如Banthar提到的,glPushMatrix/glPopMatrix的顺序是错误的。在您的示例中甚至不需要它们,因此您可以安全地删除它们。

关于字体,看起来UnicodeFont现在是正确的:

代码语言:javascript
复制
textFont = new UnicodeFont(new Font("Times New Roman", Font.PLAIN, 18));
textFont.addAsciiGlyphs();
textFont.getEffects().add(new ColorEffect(java.awt.Color.WHITE));
textFont.loadGlyphs();

我也试过你的代码,没有任何优化,它运行正常,尽管存在矩阵顺序问题。是的,有一个很小的初始化时间。但在这里它非常短,大约一秒钟。您的硬件通常是非常旧的,或者您的图形驱动程序可能不好。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10660920

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档