ich versuche mal mein Problem darzustellen, was an sich schon nicht einfach ist. Vieles, was ich für unwichtig halte, habe ich aus dem Code entfernt. Wenn also was unklar ist, einfach nochmal nachhaken
Was ich habe ist ein riesiger Haufen Code (nicht von mir). Erstellt wird hierbei ein OpenGL Fenster. In diesem Fenster soll ich nun einige geometrischen Figuren darstellen. Das Fenster wird in einer Header definiert und dann in der entsprechenden .cpp aufgerufen.
Quote:
class Display1 : Drawable
{
public:
//Constructor and deconstructor
Display1(int DisplayWidth, int DisplayHeight);
~Display1();
//Draw function
virtual void draw();
};
Und der Aufruf in der main.cppQuote:
Display1:isplay1(int DisplayWidth, int DisplayHeight):
{
}
Display1::~Display1()
{
}
void Display1:: draw()
{
}
In der Display1.cpp gibt es eine drawfunction. Wenn ich in dieser nun etwas in OpenGL schreibe, wird das auch brav angezeigt.Quote:
Display1 display_1(800, 800);
Was ich nun aber machen soll, ist zb dass ich einen Kreis in einer weiteren Klasse definiere und dann eine Methode der Klasse aufrufe, in welche ich den Ort und die Größe des Kreises übergebe.
Ich habe also eine Klasse "Kreis":
Und in der .cpp habe ich dann das:Quote:
class Kreis
{
public:
Kreis (float x, float y, int a, int b);
~Kreis ();
void draw (float x, float y, int a, int b);
};
Und in der main.cpp (das würde ich denke ich aber später mal in eine eigene Funktion packen):Quote:
void Kreis::draw (float x, float y, int a, int b)
{
cout << "Kreis gemalt mit x,y und start- und endwinkel: " << x << y << a << b << endl;
glPushMatrix();
glColor3ubv(red);
glTranslatef(0.0,0.-10,0);
glBegin(GL_QUADS);
glVertex2f(0, 200);
glVertex2f(200, 200);
glVertex2f( 200, 400);
glVertex2f( 0, 400);
glEnd();
glPopMatrix();
}
Kreis::Kreis (float x, float y, int a, int b)
{
}
Kreis::~Kreis()
{
}
In der Konsole wird mir auch die Ausgabe aus der Kreis::draw Methode angezeigt, aber im OpenGL Fenster seh ich davon nichts.Quote:
Kreis *kreis1 = new Kreis(0.5, 0.5, 90, 270);
kreis1->draw(0.5, 0.5, 90, 270);
delete kreis1;
Irgendwie müste ich glaube ich die Methode in Display1::draw ausführen, damits im Fenster auch gezeichnet wird, aber ich weiß nicht wie. Vllt ist der Gedanke auch totaler Blödsinn. Ich hoffe, einer von euch hat da eine Idee.
PS.: Bevor jmd meckert, ich weiß, dass da kein Kreis gezeichnet wird, das ist nur zu Testzwecken