Einfache 3D Darstellung in Windwos Forms Anwendung (VisualStudio 2008)



  • Hey cool,

    habs jetzt auch geschafft das 3D Modell mit den Pfeiltasten um 2 Achsen drehbar zu machen!
    Ihr werdet euch zwar über solche Mini-Steps kaputt lachen, aber mir machts grade voll Spaß!
    Ging schneller als erwartet.

    Für meine beiden Punkte oben suche ich aber trotzdem noch nach wertvollen Tips.

    Danke,
    Andi



  • Das ist doch schön zu hören. Ich schätze mal, das was du suchst ist das hier.



  • Andyrandy schrieb:

    - Anzeige des Open GL Modells innerhalb einer Windows Forms Anwendung
    anstatt wie im Moment in einem separaten Fenster.
    Konnte leider nichts dazu finden.

    Vielleicht hilft dir das hier weiter: http://www.codeproject.com/KB/openGL/sharpgl.aspx



  • Erzeuge einfach kein neues Fenster sondern benutze das HDC des gewuenschten Gui-Elementes.



  • hellihjb schrieb:

    Erzeuge einfach kein neues Fenster sondern benutze das HDC des gewuenschten Gui-Elementes.

    Hi hellihjb,

    kannst du das bitte nochmal genauer erklären?
    Sorry, habs nicht verstanden.

    Derweil habe ich noch ein Beispiel gefunden, wo Open GL auf einer WIndwos-Forms Anwendung plaziert wird:
    http://www.codeproject.com/KB/miscctrl/OpenGLViewWinForms.aspx
    Leider funktioniert aber das Beispiel von dort bei mir nicht.

    Vermutlich weil ich Vis.Studio2008 benutze, und das Beispiel in einer älteren Version geschrieben wurde.

    Hat vielleicht jemand noch weitere Tips, beispiel oder Tutorials wo das evtl beschrieben ist?

    Danke!

    Ciao,
    Andi





  • Hallo,

    vielen Dank nochmal für alle hilfreichen Tips bisher!

    Für alle die evtl. etwas Ähnliches programmieren wollen:
    Hier das beste und einfachste Tutorial das ich gefunden habe ein 3D Objekt dar zu stellen und mit der Maus zu steuern bzw. zu drehen.
    http://www.zeuscmd.com/tutorials/opengl/13-SolidShapes.php

    Und hier ein Beispiel wie man ein OpenGL "Fenster" auf einer Windows Forms Anwendung plaziert:
    http://www.codeproject.com/KB/miscctrl/OpenGLViewWinForms.aspx

    Ein kleines Problem habe ich aber noch:
    Ich habe jetzt auf dem zweiten Link aufbauend eine Maus Steuerung so wie beim ersten Link eingebaut.
    Das Programm wird auch ohne Probleme compiliert.
    Wenn ich es aber ausführe stürzt es ab mit der Fehlermeldung:
    *
    "Eine nicht behandelte Ausnahme des Typs "System.AccessViolationException" ist in OpenGL_on_a_Windows_Form.exe aufgetreten.
    Zusätzliche Informationen: Es wurde versucht, im geschützten Speicher zu lesen oder zu schreiben. Dies ist häufig ein Hinweis darauf, dass anderer Speicher beschädigt ist."*

    Könnte mir evtl. noch einmal jemand helfen und einen Blick über mein Projekt werfen?
    Ich habe mein Projekt mal als ZIP hier hoch geladen:
    http://www.materialordner.de/b6ZrvxGx6OlACMk4i2rjBdAttwHMrj8t.html

    Ich freue mich über jeden Tip!

    (nach Abschluss lade ich das Projekt für Leute mit ähnlichen Problemen ins Inet hoch)
    Danke im Voraus!
    Andy



  • Nutze den Debugger und finde heraus, an welcher Stelle das Programm crasht. Damit kannst du den Fehler gut eingrenzen.

    Nichts anderes würde ich mit deinem Code machen, nur habe ich keine Lust, mir den anzusehen und bin außerdem der Meinung, dass du mehr lernst, wenn du es selbst machst 😉



  • Hi,

    natürlich habe ich zuerst hartnäckig versucht den Fehler selbst zu beseitigen.

    Es hat irgendwas mit diesen 3 Glut Funktionen zu tun:
    glutKeyboardFunc(keyboard);
    glutMouseFunc(mouse);
    glutMotionFunc(mouseMotion);

    Ich habe sie alle auskommentiert und einzeln aktiviert.
    Jede einzelne Funktion genügt bereits um die Fehlermeldung zu verursachen.
    Also scheint irgend ein grundsätzliches Problem vor zu liegen.

    Evtl. rufe ich die Funktionen von der falschen Stelle aus auf?
    Das steht jetzt alles in der .h Datei der Forms Anwendung.
    In meinen bisherigen Konsolen-Anwendungen war das Hauptprogramm File immer das .cpp file. Aber in Win-Forms Anwendungen muss man anscheined im .h file programmieren, da dort auch die ganzen Funktionen z.B. von Buttons etc. hinein geschrieben werden?

    Sorry falls sich manche meiner Fragen für euch lächerlich anhören.
    Habe selbst leider nie richtig C++ gelernt, bin aber motiviert es zu lernen!

    Wäre wiklich cool wenn jemand kurz mein Projekt downloaden und anschaun könnte.
    http://www.materialordner.de/b6ZrvxGx6OlACMk4i2rjBdAttwHMrj8t.html

    Ein Fachmann sieht den Fehler ja evtl. sofort.

    Vielen Dank im Voraus!
    Andy



  • Habs mit zwar angesehen, aber kenn mich da absolut ned aus... sorry...
    Hoffentlich gibt der nächste ne passende Antwort...



  • Hi,

    @ZodX: danke trotzdem!

    Mir ist noch etwas eigefallen:
    Kann es vielleicht sein, dass man die Glut Funktionen
    glutMouseFunc(mouse);
    etc. nur benutzen kann, wenn auch das Fenster mit Glut erstellt wurde?

    Wenn man ein eigenes fenster mi Glut erstellt geht das ja mit
    glutCreateWindow().

    Ich habe aber ja jetz eine WindowsForms Anwendung.
    Geht das dann evtl. nicht?

    Danke!

    Ciao,
    Andy



  • Ja, das könnte sein. Persönlich habe ich noch nie Glut und WinForms gemischt.
    Aber denkbar ist es. Vermutlich erwarten die Glutfunktionen, dass das Fenster auch von Glut erstellt wurde.

    Aber gerade die Maus- und Tastatureingaben kannst du doch auch gut mit WinForms verarbeiten, dafür brauchst du Glut nicht.

    Ich würde, wenn möglich, ganz auf Glut verzichten. Ich kann mir nicht vorstellen, dass sich das mit WinForms verträgt.


Anmelden zum Antworten