Текстовая ошибка с LWJGL и Slick2D

Я пытался создать небольшую программу с помощью LWJGL, просто чтобы научиться немного графике, когда я пытаюсь наложить текст на 2D-сцену, которую я рисую (это коробка, которая постоянно отскакивает от всех сторон). окно) текст становится размытым, а поле многократно мерцает - http://imgur.com/UDelj1d Еще незнакомец, если я скопирую строку font.drawString, но заставлю ее отображать одно слово вместо координат, она вообще не мерцает, но остается размытой - http://imgur.com/3VkTSXH.

Может ли кто-нибудь помочь мне с тем, почему это происходит и как я могу это исправить? Я довольно хорошо разбираюсь в Java, но это первый раз, когда я пытаюсь сделать что-то, ориентированное на графику.

import java.nio.FloatBuffer;
import java.text.DecimalFormat;

import org.lwjgl.LWJGLException;
import org.lwjgl.Sys;
import org.lwjgl.opengl.Display;
import org.lwjgl.opengl.DisplayMode;

import org.newdawn.slick.SlickException;
import org.newdawn.slick.UnicodeFont;
import org.newdawn.slick.font.effects.ColorEffect;

import org.lwjgl.BufferUtils;

import static org.lwjgl.opengl.GL11.*;


public class TimerDemo
{
//time in ms since the last frame was rendered
private static long lastFrame;

//current time in ms
private static long getTime()
{
    return (Sys.getTime() * 1000) / Sys.getTimerResolution();
}

//gets the difference between the current time and lastFrame, then updates lastFrame
private static double getDelta()
{
    long currentTime = getTime();
    double delta = (double) (currentTime - lastFrame);
    lastFrame = getTime();
    return delta;
}


private static UnicodeFont font;
private static void setUpFonts()
{
    java.awt.Font awtFont = new java.awt.Font("Arial", java.awt.Font.PLAIN, 12);
    font = new UnicodeFont(awtFont);
    font.getEffects().add(new ColorEffect(java.awt.Color.white));
    font.addAsciiGlyphs();

    try
    {
      font.loadGlyphs();
    } 
    catch (SlickException e)
    {
        e.printStackTrace();
    }
}

public static void main(String[] args)
{
    try
    {
        Display.setDisplayMode(new DisplayMode(680, 480));
        Display.setTitle("Timer Demo");
        Display.create();
    }
    catch (LWJGLException e)
    {
        e.printStackTrace();
        Display.destroy();
        System.exit(1);
    }

    setUpFonts();

    //position
    int x = 100;
    int y = 100;

    //velocity
    int dx = 1;
    int dy = 1;

    //ensure lastframe is updated
    lastFrame = getTime();

    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    glOrtho(0, 680, 480, 0, 1, -1);
    glMatrixMode(GL_MODELVIEW);


    while (!Display.isCloseRequested())
    {
        // Render

        glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
        glLoadIdentity();

        //change in position
        double delta = getDelta();

        if(x + 30 >= 680)
            dx = -1;
        else if (x <= 0)
            dx = 1;

        if(y + 30 >= 480)
            dy = -1;
        else if (y <= 0)
            dy = 1;

        x += delta * dx * 0.1;
        y += delta * dy * 0.1;

        glRecti(x, y, x + 30, y + 30);

        font.drawString(100, 10, "x is " + x + " y is " + y);


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

    Display.destroy();
    System.exit(0);
}
}

person Pastadin    schedule 25.09.2013    source источник
comment
Мне кажется немного странным смешивать LWJGL с Slick2D. Рассматривали ли вы вариант использования только среды Slick2D, поскольку шрифты созданы для работы в этой среде?   -  person PlayDeezGames    schedule 25.09.2013


Ответы (1)


Звоните glEnable(GL_TEXTURE_2D);font.drawString(100, 10, "x is " + x + " y is " + y); glDisable(GL_TEXTURE_2D); вместо font.drawString(100, 10, "x is " + x + " y is " + y);

person Maarten    schedule 19.11.2013