S
SchodMC
Mitglied
Thread Starter
- Dabei seit
- 27.08.2009
- Beiträge
- 29
- Reaktionspunkte
- 0
Hallo,
ich habe eine Frage zum Thema OpenGL und Cocoa. Bisher bin ich OpenGL Programmierung "nur" unter Windows gewöhnt. Dort habe ich die Funktion zum Rendern immer innerhalb der Main-Loop bzw. in der Idle Funktion (die von der Main-Loop nach der Abarbeitung aller anstehenden Windows-Nachrichten aufgerufen wurde) plaziert.
In den Beispielen von Apple und diversen Tutorials hab ich gesehen, dass die Render-Funktion unter Cocoa von einem Timer aufgerufen wird.
Daher meine Frage: gibt es eine Möglichkeit, sich in die Main-Loop einzuhängen? Ich weiß, dass dies mit dem Timer irgendwie der Fall ist, aber der Aufruf erfolgt eben "nur" nach einer bestimmten Zeit und nicht immer. Zwar mag das den Vorteil haben, dass die CPU nicht auf Max. läuft. Aber es dürfte doch einiges an Resourcen für das Rendern verschwendet werden, da der Timer das ganze doch ausbremst. Mag natürlich sein, dass ich den Timer falsch verstehen...
Auf der anderen Seite: soweit ich das verstanden hab ist Cocoa nicht einfach nur ein Objekt-Orientierer Aufsatz für eine API wie die MFC unter Windows sondern die "native" GUI Schnittstelle für Mac OSX. Liege ich damit richtig oder gibt es noch ein andere Möglichkeit, ein Fenster zu erstellen und zur OpenGL Ausgabe zu verwenden (ähnlich der Windows API bei der man seine Main-Loop dann alleine erstellt).
Und bevor es Missverständnisse gibt: nein, ich weine nicht der Windows-API hinterher. Im Gegenteil, ich finde es sehr angenehm, vom System eine gut durchdachte Objekt-Orientierte API zu bekommen. Ich hab halt nur Anfragen bzgl. der Performance, zumal Objective-C an sich schon etwas langsamer sein soll als C++ (laut diversen Internet-Aussagen, wobei ich einfach mal davon ausgehe, dass das mittlerweile zu vernachlässigen ist).
Gruß Marc
ich habe eine Frage zum Thema OpenGL und Cocoa. Bisher bin ich OpenGL Programmierung "nur" unter Windows gewöhnt. Dort habe ich die Funktion zum Rendern immer innerhalb der Main-Loop bzw. in der Idle Funktion (die von der Main-Loop nach der Abarbeitung aller anstehenden Windows-Nachrichten aufgerufen wurde) plaziert.
In den Beispielen von Apple und diversen Tutorials hab ich gesehen, dass die Render-Funktion unter Cocoa von einem Timer aufgerufen wird.
Daher meine Frage: gibt es eine Möglichkeit, sich in die Main-Loop einzuhängen? Ich weiß, dass dies mit dem Timer irgendwie der Fall ist, aber der Aufruf erfolgt eben "nur" nach einer bestimmten Zeit und nicht immer. Zwar mag das den Vorteil haben, dass die CPU nicht auf Max. läuft. Aber es dürfte doch einiges an Resourcen für das Rendern verschwendet werden, da der Timer das ganze doch ausbremst. Mag natürlich sein, dass ich den Timer falsch verstehen...
Auf der anderen Seite: soweit ich das verstanden hab ist Cocoa nicht einfach nur ein Objekt-Orientierer Aufsatz für eine API wie die MFC unter Windows sondern die "native" GUI Schnittstelle für Mac OSX. Liege ich damit richtig oder gibt es noch ein andere Möglichkeit, ein Fenster zu erstellen und zur OpenGL Ausgabe zu verwenden (ähnlich der Windows API bei der man seine Main-Loop dann alleine erstellt).
Und bevor es Missverständnisse gibt: nein, ich weine nicht der Windows-API hinterher. Im Gegenteil, ich finde es sehr angenehm, vom System eine gut durchdachte Objekt-Orientierte API zu bekommen. Ich hab halt nur Anfragen bzgl. der Performance, zumal Objective-C an sich schon etwas langsamer sein soll als C++ (laut diversen Internet-Aussagen, wobei ich einfach mal davon ausgehe, dass das mittlerweile zu vernachlässigen ist).
Gruß Marc