Zeichnen auf Knopfdruck im Framwork

Moderator: Geometrische Methoden des CAD/CAE

MatthiasBein
Moderator
Moderator
Beiträge: 130
Registriert: 15. Jun 2009 16:42

Zeichnen auf Knopfdruck im Framwork

Beitrag von MatthiasBein » 18. Nov 2013 10:31

Hi,

da die Frage öfters vorkommt, werde ich hier kurz erklären, wie man im vorgegebenen Framework etwas auf Knopfdruck zeichnen lässt.

Erstmal muss man wissen, dass in der main.cpp die Methode "int main(int argc, char** argv)" mit dem Aufruf "glutDisplayFunc(renderScene);" die Methode "renderScene()" für das Zeichnen der Szene verantwortlich gemacht wird. Also wann immer ein neu Zeichnen der Szene angestoßen wird, wird die "renderScene()" aufgerufen. Und NUR in dieser Methode oder in ihr aufgerufenen Methoden kann gezeichnet werden!

Wenn man nun etwas über Knopfdruck zeichnen lassen will, muss man wie folgt vorgehen:
  • Eine globale Variable definieren, die alle nötigen Daten beinhaltet, die zum Zeichnen benötigt werden. Z.B. wie p1, p2 und p3 in der main.h.
  • In der "drawObjects"-Methode, die von der "renderScene" aufgerufen wird, muss gezeichnet werden. Z.B. Punkte und Linien.
  • In der "keyPressed"-Methode muss etwas auf Knopfdruck passieren. Z.B. kann man eine Transformation auf einen Punkt anwenden und damit einen neuen Punkt berechnen, welcher dann in der "drawObjects"-Methode gezeichnet wird. Anschließen mit "glutPostRedisplay();" ein Neuzeichnen anstoßen. Es bringt nichts in der "keyPressed"-Methode direkt OpenGL-Befehle zum Zeichnen aufzurufen! Gezeichnet wird nur das, was in der "renderScene" beschrieben ist.
  • Hinweis: Um eine Rotation zu präsentieren kann z.B. ein Punkt auf Knopfdruck immer um 10° um eine bestimmte Achse rotiert werden. Hat zur Folge, dass der Punkt bei jedem Knopfdruck ein kleines Stück weiter rückt und bei schnellem Ablauf eine nachvollziehbare Kreisbahn abfährt.

Zurück zu „Geometrische Methoden des CAD/CAE“