© best_vector/Shutterstock.com
Windows Developer
Ausflug in die 3. Dimension - Interna von SharpGL

Im Inneren von SharpGL

Im vorhergehenden Artikel dieser Serie wurde die Open-Source-Bibliothek SharpGL vorgestellt. Neben einem Blick auf die Beispiele wurden der Aufbau und die Komponenten des Frameworks gezeigt. Im zweiten Teil dieser Artikelserie soll nun die interne Funktionsweise von SharpGL erläutert werden.

Robin Sedlaczek


ArtikelserieTeil 1: SharpGL: OpenGL in .NET – eine EinführungTeil 2: SharpGL: OpenGL in .NET – Nutzung und Interna

Der folgende Artikel soll im ersten Abschnitt zeigen, wie SharpGL intern funktioniert und die Funktionalitäten der OpenGL in .NET-Sprachen bereitstellt. Anschließend werden dann einige weiterführende Aspekte der Bibliothek vorgestellt. Abbildung 1 zeigt schematisch, wo die OpenGL und SharpGL im Systemkontext einzuordnen sind.

Abb. 1: SharpGL im Systemkontext

Um die Funktionsweise von SharpGL zu verstehen, müssen wir einen Schritt zurückgehen und die .NET-Welt für einen kurzen Moment verlassen. Besser gesagt, wir gehen einen Schritt zur Seite und begeben uns etwas tiefer in das Windows-Betriebssystem. Hier muss ein Blick auf das Windows API [1], [3] geworfen werden. Das Windows-API, in seinen Ausprägungen als Win16, Win32 und Win64 bekannt, ist die Kernmenge aller Schnittstellen, die von Microsofts Betriebssystem Windows zur Verfügung gestellt werden. Anwendungen benutzen diese Schnittstellen, um mit der Windows-Plattform zu interagieren, z. B. für den Zugriff auf Dateien oder zum Erstellen von Threads und Prozessen. Implementiert ist das WinAPI in C und befindet sich größtenteils in der Datei KERNEL32.dll. Das ­WinAPI selbst greift dabei auf das darunterliegende Native API [2] zu, die fundamentale C-Laufzeitfunktionen im Kernelmodus zur Verfügung stellt. Aufrufe aus dem WinAPI heraus in das Native API werden mittels der System Service Dispatch Table [4] umgesetzt.

Das WinAPI befindet sich sehr dicht an der Hardware und besitzt entsprechende Leistungseigenschaften. Das ist nicht zuletzt einer der Gründe, aus dem die OpenGL als Win32-API in Form einer Win32-DLL von Microsoft zur Verfügung gestellt wird. Die OPENGL32.DLL befindet sich im Windows-Installationsverzeichnis unter %SYSTEMROOT%\SYSTEM32 und kann von dort für 32-Bit-Anwendungen benutzt werden. Für 64-Bit-Anwendungen befindet sie sich im Verzeichnis %SYSTEMROOT%\SYSWOW64.

Funktionen einer solchen Win32-DLL können anderen Anwendungen mithilfe von Exportdirektiven zur Verfügung gestellt werden. Microsoft hat den hauseigenen 16-Bit-C/C++-Compiler dazu mit dem Schlüsselwort __export ausgestattet, um Exportnamen automatisch durch den Compiler generieren zu lassen. Diese werden in Lib-Dateien hinterlegt, die wiederum durch den Linker an DLL-Dateien gelinkt werden können. Mit neueren Versionen von Visual C++ und für 32-Bit-Umgebungen führte Microsoft die Schlüsselwörter __declspec(dllexport) ei...

Windows Developer
Ausflug in die 3. Dimension - Interna von SharpGL

Im Inneren von SharpGL

Im vorhergehenden Artikel dieser Serie wurde die Open-Source-Bibliothek SharpGL vorgestellt. Neben einem Blick auf die Beispiele wurden der Aufbau und die Komponenten des Frameworks gezeigt. Im zweiten Teil dieser Artikelserie soll nun die interne Funktionsweise von SharpGL erläutert werden.

Robin Sedlaczek


ArtikelserieTeil 1: SharpGL: OpenGL in .NET – eine EinführungTeil 2: SharpGL: OpenGL in .NET – Nutzung und Interna

Der folgende Artikel soll im ersten Abschnitt zeigen, wie SharpGL intern funktioniert und die Funktionalitäten der OpenGL in .NET-Sprachen bereitstellt. Anschließend werden dann einige weiterführende Aspekte der Bibliothek vorgestellt. Abbildung 1 zeigt schematisch, wo die OpenGL und SharpGL im Systemkontext einzuordnen sind.

Abb. 1: SharpGL im Systemkontext

Um die Funktionsweise von SharpGL zu verstehen, müssen wir einen Schritt zurückgehen und die .NET-Welt für einen kurzen Moment verlassen. Besser gesagt, wir gehen einen Schritt zur Seite und begeben uns etwas tiefer in das Windows-Betriebssystem. Hier muss ein Blick auf das Windows API [1], [3] geworfen werden. Das Windows-API, in seinen Ausprägungen als Win16, Win32 und Win64 bekannt, ist die Kernmenge aller Schnittstellen, die von Microsofts Betriebssystem Windows zur Verfügung gestellt werden. Anwendungen benutzen diese Schnittstellen, um mit der Windows-Plattform zu interagieren, z. B. für den Zugriff auf Dateien oder zum Erstellen von Threads und Prozessen. Implementiert ist das WinAPI in C und befindet sich größtenteils in der Datei KERNEL32.dll. Das ­WinAPI selbst greift dabei auf das darunterliegende Native API [2] zu, die fundamentale C-Laufzeitfunktionen im Kernelmodus zur Verfügung stellt. Aufrufe aus dem WinAPI heraus in das Native API werden mittels der System Service Dispatch Table [4] umgesetzt.

Das WinAPI befindet sich sehr dicht an der Hardware und besitzt entsprechende Leistungseigenschaften. Das ist nicht zuletzt einer der Gründe, aus dem die OpenGL als Win32-API in Form einer Win32-DLL von Microsoft zur Verfügung gestellt wird. Die OPENGL32.DLL befindet sich im Windows-Installationsverzeichnis unter %SYSTEMROOT%\SYSTEM32 und kann von dort für 32-Bit-Anwendungen benutzt werden. Für 64-Bit-Anwendungen befindet sie sich im Verzeichnis %SYSTEMROOT%\SYSWOW64.

Funktionen einer solchen Win32-DLL können anderen Anwendungen mithilfe von Exportdirektiven zur Verfügung gestellt werden. Microsoft hat den hauseigenen 16-Bit-C/C++-Compiler dazu mit dem Schlüsselwort __export ausgestattet, um Exportnamen automatisch durch den Compiler generieren zu lassen. Diese werden in Lib-Dateien hinterlegt, die wiederum durch den Linker an DLL-Dateien gelinkt werden können. Mit neueren Versionen von Visual C++ und für 32-Bit-Umgebungen führte Microsoft die Schlüsselwörter __declspec(dllexport) ei...

Neugierig geworden?


    
Loading...

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang