UI in GLOOP?

1 Antwort

Vom Fragesteller als hilfreich ausgezeichnet

Für GLOOP werden intern OpenGL (über die JOGL-Bibliothek) sowie Swing genutzt. Die Frage wäre nun also, wie man sich am besten einklinken kann.

An den Frame oder das Canvas-Element kommt man nicht direkt heran, denn sie sind beide package protected. Man könnte sich allerdings ein eigenes GLObjekt erstellen:

public class TextMessageBox extends GLObjekt {
  public TextMessageBox(double x, double y, double width, double height, String text) {
    // ...
  }

  @Override
  public void zeichneObjekt(GL2 gl, GLU glu) {
    // ...
  }
}

Die Basisklasse sorgt dafür, dass die erzeugten Objekte für den Renderer registriert werden und später auch ein Aufruf der zeichneObjekt-Methode stattfindet.

Für den weiteren Teil müsstest du dich näher mit JOGL / OpenGL befassen. Ich werde hier nur auf ein paar Grundelemente für deine Komponente eingehen.

Eine Dokumentation zu JOGL findest du hier.

a) Ein Rechteck kann man folgendermaßen erstellen:

gl.glColor3f(1f, 1f, 1f);

gl.glBegin(GL2.GL_POLYGON);
gl.glVertex3f(0f, 0f, 0f);
gl.glVertex3f(5f, 0f, 0f);
gl.glVertex3f(5f, 4f, 0f);
gl.glVertex3f(0f, 4f, 0f);
gl.glEnd();

b) Das Zeichnen von Text könnte man über die glutBitmapString-Methode regeln. Ungefähr so:

gl.glColor3f(1f, 1f, 1f);
gl.glRasterPos2f(textPositionX, textPositionY);

GLUT glut = new GLUT();
glut.glutBitmapString(GLUT.BITMAP_HELVETICA_12, "Some text");