Hallo liebe Leute, ich spiele immer noch mit meinen Zufallsgenerierten Sonnensystemen und LinkedLists herum, nun möchte ich die generierten Systeme in einem OpenGL-JInternalFrame anzeigen lassen.
Das Fenster funktioniert, kann drin zeichnen, nun stoße ich auf folgendes Problem.
Ich will die ganzen Methoden ja möglichst klein halten um Übersicht zu schaffen und mit dieser Methode hier die Planeten (später) an ihre jeweiligen Positionen bringen.
Um das zu schaffen, hat jedes Planetenobjekt eigene Positions- und Geschwindigkeitswerte etc, die ich hier mit einbauen muss. Aber WENN ich diese nun hier in dieser Methode die ganzen int, doubles etc. definiere/abrufe, dann wird meine Kugel nicht gezeichnet, stattdessen bleibt ein weißes Fenster übrig.
Lösche ich sie, wird die Kugel ganz normal dargestellt. warum?
Ich kann die Variablen auch nicht woanders hin verschieben, weil das GLWindow vor dem MainWindow, in dem es sich dann eigentlich befindet, geladen wird und ich dann einen Error bekomme, dass die "Syslist" ja noch gar nicht existiert...
Beste Grüße!
Das Fenster funktioniert, kann drin zeichnen, nun stoße ich auf folgendes Problem.
Ich will die ganzen Methoden ja möglichst klein halten um Übersicht zu schaffen und mit dieser Methode hier die Planeten (später) an ihre jeweiligen Positionen bringen.
Um das zu schaffen, hat jedes Planetenobjekt eigene Positions- und Geschwindigkeitswerte etc, die ich hier mit einbauen muss. Aber WENN ich diese nun hier in dieser Methode die ganzen int, doubles etc. definiere/abrufe, dann wird meine Kugel nicht gezeichnet, stattdessen bleibt ein weißes Fenster übrig.
Lösche ich sie, wird die Kugel ganz normal dargestellt. warum?
Java:
private void DrawPlanet(GLAutoDrawable drawable) {
GL2 gl = drawable.getGL().getGL2();
int selectedSystem = MainWindow.this.sysList.getSelectedIndex();
int selectedPlanet = MainWindow.this.planetList.getSelectedIndex();
Planet p = systems.get(selectedSystem).getPlanet(selectedPlanet);
int distance = p.getDistance();
float speed = p.getSpeed();
double xPos = p.getXPos();
double yPos = p.getYPos();
double zPos = p.getZPos();
double xAngle = p.getXAngle();
double yAngle = p.getYAngle();
double zAngle = p.getZAngle();
gl.glMatrixMode(gl.GL_MODELVIEW);
gl.glLoadIdentity();
// Set material properties.
float[] rgba = {0.3f, 0.5f, 1f};
gl.glMaterialfv(GL.GL_FRONT, gl.GL_AMBIENT, rgba, 0);
gl.glMaterialfv(GL.GL_FRONT, gl.GL_SPECULAR, rgba, 0);
gl.glMaterialf(GL.GL_FRONT, gl.GL_SHININESS, 0.5f);
gl.glColor3f(0.3f, 0.5f, 1f);
// Draw sphere
/*xAngle = (xAngle + 1f) % 360;
zAngle = (zAngle + 1f) % 360;
xPos = Math.sin(Math.toRadians(xAngle))*distance;
zPos = Math.cos(Math.toRadians(zAngle))*distance;*/
//gl.glTranslatef(0.0f, 10f, 0.0f); // Translate object
GLUquadric earth = glu.gluNewQuadric();
glu.gluQuadricDrawStyle(earth, GLU.GLU_LINE);
glu.gluQuadricNormals(earth, GLU.GLU_FLAT);
glu.gluQuadricOrientation(earth, GLU.GLU_OUTSIDE);
final float radius = 6.345f;
final int slices = 64;
final int stacks = 64;
glu.gluSphere(earth, radius, slices, stacks);
glu.gluDeleteQuadric(earth);
}
Beste Grüße!
Zuletzt bearbeitet: