P
Pille
Gast
Hi,
Wenn ich einer Klasse ein Objekt als Attribut "geben", ist dies dann eine Referenz oder eine Kopie des Objektes? Also folgendes:
Ich hab eine Klasse, die für mich Objekte in OpenGL zeichnet. Damit ich nicht immer die OpenGL Variablen übergeben muss, will ich diesen im Objekt speichern. Nur bin ich mir nun nicht sicher, ob ich von da aus auch die OpenGL Daten so verändern kann, dass sie auch gerendert werden.
Also hier mal in wenig Code, ist dann glaub ich einfacher:
Kann ich das so machen?
Also ein Teil der da gegen sprechen würde, wäre, das sich momentan nicht die Farbe ändern kann^^. Aber da es hier erstmal um die Theorie geht, ist mir das egal, bzw.je nach dem Frage ich dann nochmal im Grafikforum nach bzw. werd mal den debugger anschmeissen.
Wenn ich einer Klasse ein Objekt als Attribut "geben", ist dies dann eine Referenz oder eine Kopie des Objektes? Also folgendes:
Ich hab eine Klasse, die für mich Objekte in OpenGL zeichnet. Damit ich nicht immer die OpenGL Variablen übergeben muss, will ich diesen im Objekt speichern. Nur bin ich mir nun nicht sicher, ob ich von da aus auch die OpenGL Daten so verändern kann, dass sie auch gerendert werden.
Also hier mal in wenig Code, ist dann glaub ich einfacher:
Code:
import javax.media.opengl.*;
public class Triangle
{
private int[] color = new int[2];
private GL gl;
public Triangle(int pSize,GL pGL)
{
gl = pGL;
}
public void draw()
{
//Hier z.B. mit gl.glPushMatrix(); und mit PopMatrix alles speichern und wiederherstellen
this.getGL().glBegin(GL.GL_TRIANGLES);
this.getGL().glColor3i(color[0],color[1],color[2]);
this.getGL().glVertex3f(-1,-1, 0);
this.getGL().glVertex3f( 1,-1, 0);
this.getGL().glVertex3f( 0, 1, 0);
this.getGL().glEnd();
}
}
<!.. New File -->
import javax.media.opengl.*;
public class Render implements GLEventListener
{
private Triangle myT;
public void init(GLAutoDrawable drawable)
{
myT = new Triangle(5,drawable.getGL());
int[] t = {0,0,1};
myT.setColor(t);
}
public void display(GLAutoDrawable drawable)
{
//clear Background and render new
GL gl = drawable.getGL(); //hier nun das Fragliche: ändert sich gl und wenn ja änder sich damit das gl in meinem Objekt?
gl.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT);
gl.glClearColor(1.0f, 1.0f, 1.0f, 0.0f);
myT.draw();
}
public void reshape(GLAutoDrawable drawable, int x, int y, int width, int height) {}
public void displayChanged(GLAutoDrawable drawable, boolean modeChanged,boolean deviceChanged) {}
}
Also ein Teil der da gegen sprechen würde, wäre, das sich momentan nicht die Farbe ändern kann^^. Aber da es hier erstmal um die Theorie geht, ist mir das egal, bzw.je nach dem Frage ich dann nochmal im Grafikforum nach bzw. werd mal den debugger anschmeissen.