Einzelnen Beitrag anzeigen

blackfin
(Gast)

n/a Beiträge
 
#9

AW: OpenGL - Prüfen ob Textur angeklickt

  Alt 6. Nov 2011, 16:07
Ja, denn du verlässt bei Benutzung von OpenGL die VCL komplett, was wiederum bedeutet, dass du die gesamte Objekthiearchie, -Verwaltung und Event Handler (wie z.B. ein onClick) deiner gezeichneten Dinge selbst schreiben musst, von Grund auf, angefangen bei (fast) 0.
Beispiel: Eine gezeichnete Textur hat keinerlei Objekt-Referenz in OpenGL, es wird halt einfach gezeichnet. Die Objekt-Struktur musst du dir (vorher) selbst überlegen und dir die Objekte / Klassen selbst ausdenken.
(z.B. eine Klasse, die einen texturierten Quad mit den übergebenen Parametern Breite, Höhe, Position zeichnet, die Koordinaten, Verschiebung etc. aber intern sebst verwaltet und eigentlich nur als Draw-Routine eben OpenGL verwendet).

Bei OpenGL gibt es eben so etwas Feines wie die VCL nicht, wie Medium bereits gesagt hat, ist OpenGL erstmal nichts andereres als eine Schnittstelle, mit der zu zeichnen kannst, mehr nicht.
Als Vorteil der Schnittstelle hast du eben Hardware-Zugriff beim Zeichnen und ein paar nette Funktionen für das Zeichnen und der Transformation der Zeichenfläche selbst, das wars aber schon.
(Das ganze Shader-Zeug mal ausgenommen, das würde jetzt aber den Rahmen sprengen...)

Willst du aber "ready to use" OnClick, Objekte, etc, musst du eine Game-Engine verwenden, die ein Objekt-System inkl. Eventhandlern usw. bereits implementiert hat und dir diese Arbeit bereits abgenommen hat.
Wenn du aber alles von Grund auf lernen willst, also OpenGL nativ verwenden willst, musst du aber auch von Grund auf selbst ran
Nicht verzagen, es ist am Anfang sehr hart, aber Stück für Stück lichtet sich das Dunkel und es macht Spass.
Auch wenn die Lernkurve echt steil ist und man erstmal Seitenweise lesen muss

Ich lege dir nochmal nahe, nimm dir erstmal eine OpenSource Game Engine wie z.B. GLScene und sieh dir den Code und die Objekthiearchie dort an, davon kann man viel lernen.

Geändert von blackfin ( 6. Nov 2011 um 16:32 Uhr)
  Mit Zitat antworten Zitat