Subsysteme

Einführung

Der in PureBasic integrierte Befehlssatz basiert auf den verfügbaren OS-Bibliotheken. Manchmal gibt es verschiedene Wege, um das gleiche Ziel zu erreichen. Und wenn es Sinn macht, bietet PureBasic die Möglichkeit, die manchen Befehlen zugrundeliegenden Bibliotheken zu ändern, ohne auch nur eine Zeile des Quellcodes zu verändern.
Zum Beispiel gibt es unter Windows das 'DirectX11' Subsystem, welches DirectX-Funktionen zum Rendern von Sprites verwendet, anstelle von OpenGL (was das Standard-Subsystem ist). Es kann sinnvoll sein, DirectX anstelle von OpenGL zu verwenden, wenn ein etwas schnelleres Rendern auf Windows gewünscht wird.

Um ein Subsystem zu aktivieren, muss sein Name in den IDE Compiler-Optionen eingetragen werden, oder durch Verwendung der /SUBSYSTEM Kommandozeilen-Option. Dies ist eine Option zum Zeitpunkt des Kompilierens, was bedeutet, dass ein Executable nicht mehr als ein Subsystem gleichzeitig einbetten kann. Wenn die Unterstützung mehrerer Subsysteme benötigt wird (zum Beispiel für das Anbieten einer OpenGL und einer DirectX version eines Spiels), müssen zwei Executables erstellt werden.

Die verfügbaren Subsysteme befinden sich im PureBasic 'subsystems' Ordner. Alle in diesem Ordner gefundenen Residents bzw. Befehlsbibliotheken haben Vorrang gegenüber den Standard-Bibliotheken und Residents, wenn ein Subsystem angegeben wird. Eine beliebige Anzahl verschiedener Subsysteme kann angegeben werden (solange sie nicht die gleichen Bibliotheken betreffen). Da es sich bei einem Subsystem um ein Verzeichnis handelt, muss beim Subsystem-Namen unter Linux die Groß-/Kleinschreibung beachtet werden, nicht jedoch auf Windows oder OS X.

Die Subsystem Compiler-Funktion kann verwendet werden, um festzustellen, ob ein angegebenes Subsystem für die Kompilierung verwendet wird.

Verfügbare Subsysteme

Hier folgt eine Liste der verfügbaren Subsysteme, und der betroffenen Bibliotheken:

Windows
  DirectX9: verwendet DirectX 9 anstelle von OpenGL. Betroffene Bibliotheken:
          - Sprite
          - Screen
          - Hinweis: Die 3D-Engine ist dann nicht mehr verfügbar, da sie OpenGL verwendet.
  DirectX11: verwendet DirectX 11 anstelle von OpenGL. Betroffene Bibliotheken:
          - Sprite
          - Screen
          - Hinweis: Die 3D-Engine ist dann nicht mehr verfügbar, da sie OpenGL verwendet.

Linux
  gtk2: Betroffene Bibliotheken:
          - 2D Drawing
          - AudioCD
          - Clipboard
          - Desktop
          - Drag & Drop
          - Font
          - Gadget
          - Image
          - Menu
          - Movie
          - Printer
          - Requester
          - Scintilla
          - StatusBar
          - SysTray
          - Toolbar
          - Window
          
  qt: Betroffene Bibliotheken:
          - 2D Drawing
          - AudioCD
          - Clipboard
          - Desktop
          - Drag & Drop
          - Font
          - Gadget
          - Image
          - Menu
          - Movie
          - Printer
          - Requester
          - Scintilla
          - StatusBar
          - SysTray
          - Toolbar
          - Window          

MacOS X
  Keine