/ / Java - LWJGL Screen Glitch - Java, Linux, OpenGL, LWJGL, Ubuntu-13.10

Java - LWJGL Screen Glitch - Java, Linux, opengl, lwjgl, ubuntu-13.10

Ich spiele mit der LWJGL-Bibliothek undHaben Sie versucht, einen Bildschirm anzuzeigen, wird dieser bis auf einen Bildschirmfehler (siehe Abbildung unten) in jeder Hinsicht einwandfrei angezeigt. Dieser Fehler tritt jedes Mal auf, wenn ich einen Bildschirm anzeige. Ich habe nur die Datei lwjgl.jar als referenzierte Bibliothek aufgenommen und sie mit dem Linux-Natives-Ordner verknüpft. Ich lasse das Ubuntu 13.10 OS laufen und habe "freeglut" für das opengl installiert.

Bildbeschreibung hier eingeben

Hier ist der Code, den ich verwende, um den Bildschirm anzuzeigen.

public Main()
{
try
{
Display.setDisplayMode(new DisplayMode(640, 480));
Display.create();
}
catch(LWJGLException ex)
{
Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
}

while(!Display.isCloseRequested())
{
Display.update();
Display.sync(60);
}

Display.destroy();
}

Kann mir jemand sagen, was dieses Problem verursacht?

Antworten:

2 für die Antwort № 1

Sie müssen den Farbpuffer bei jedem Update löschen:

glClearColor(0f, 0f, 0f, 0f);
glClear(GL_COLOR_BUFFER_BIT);

EDIT: Zur Verdeutlichung: Der Farbpuffer (und der Tiefenpuffer, wenn Sie mit 3D arbeiten) MÜSSEN vor der Aktualisierung des Displays für jeden Frame gelöscht werden. Wenn er nicht gelöscht wird, werden zufällige Daten (daher das Schachbrettmuster und die Fußleiste) hinzugefügt.


1 für die Antwort № 2

Löschen Sie zuerst den Bildschirm, bevor Sie Display.update () aufrufen.

Verwende glClear (GL_COLOUR_BUFFER_BIT); um das zu löschenFarbpuffer. Wenn Sie den Tiefenpuffer verwenden, möchten Sie ihn möglicherweise auch auf GL_COLOUR_BUFFER_BIT | setzen GL_DEPTH_BUFFER_BIT. Sie können glClearColour () verwenden, um die Farbe festzulegen, mit der der Bildschirm gelöscht wird. Die drei Eingänge sind Rot, Grün und Blau, und der letzte ist die Alphafarbe (nicht erforderlich, setzen Sie ihn auf 1, wenn Sie müssen).

Hinweis: Ich bin Engländer. Ersetzen Sie Farbe durch Farbe.