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 'OpenGL' Subsystem, welches OpenGL-Funktionen zum Rendern von Sprites verwendet, anstelle von DirectX (was das Standard-Subsystem ist). Es kann sinnvoll sein, beim Schreiben eines Crossplattform-Spiels OpenGL anstelle von DirectX zu verwenden, da OS X und Linux beide OpenGL als Standard verwenden. Es ermöglicht auch die Verwendung direkter ("raw") OpenGL-Befehle auf den Screen.

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).

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
  OpenGL: verwendet OpenGL anstelle von DirectX. Betroffene Bibliotheken:
          - Sprite
          - Sprite3D
          - Screen
          - Alle die 3D-Engine betreffenden Bibliotheken

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

MacOS X
  Keine