WinG

Microsoft WinG

Basisdaten

Entwickler | Microsoft Corporation
Erscheinungsjahr | 1994
Aktuelle Version | 1.0
(21. September 1994)
Betriebssystem | ab Windows 3.1 und ab Microsoft Windows NT 3.5
Kategorie | Programmierschnittstelle
Lizenz | MS-EULA
Sonstiges | Systemvoraussetzung 80386 CPU oder besserVorlage:Infobox Software/Wartung/Sonstiges

WinG (sprich: Win Gee) ist eine Grafik-Programmierschnittstelle für Windows 3.1 und Windows 95, sowie Windows NT 3.5, die bis Windows 98 Second Edition unterstützt wurde und anschließend durch DirectDraw ersetzt wurde. Grund für ihre Entwicklung waren Unzulänglichkeiten in der GDI. WinG ist als 16-Bit- und 32-Bit-Version verfügbar und erlaubte somit auch die Entwicklung von vollwertigen 32-Bit-Win32-Spielen.

## Hintergrund

[Bearbeiten | Quelltext bearbeiten]

Die GDI wurde mit dem Gedanken entwickelt, Grafik unabhängig vom tatsächlich verwendeten Ausgabegerät darstellen zu können. So ist es beispielsweise möglich, mit demselben Quelltext eine Grafik zu drucken oder auf den Bildschirm auszugeben. Mittels entsprechender GDI-Treiber werden die Grafikdaten umgewandelt und in einer gerätespezifischen Umgebung, dem sogenannten Device Context (DC), in einem Bildspeicher (Framebuffer) gespeichert. Von dort aus können sie dann direkt von der jeweiligen Hardware angesprochen werden. Für Animationen ist dieser Ansatz jedoch nicht geeignet, da die Bilddaten sehr häufig aktualisiert werden müssen und die Umwandlung in einen geräteabhängigen Kontext zeitaufwendig ist. Hinzu kommt, dass es nicht möglich ist, Informationen aus dem Kontext wieder auszulesen, da die Daten dort in einem Hardware-abhängigen Format vorliegen und das Auslesen keinen Sinn hätte.

Diese Problematik wird von WinG mit Hilfe von device-independent Bitmaps (DIB), also geräteunabhängigen Bildern umgangen, die in einem WinGDC abgelegt werden. Diese besitzen zwar nicht die Möglichkeit, direkt auf andere Ausgabegeräte umgeleitet zu werden, aber die zeitaufwendige Konvertierung in ein natives Format ist nicht notwendig und die Pixel können wieder ausgelesen werden.

## Geschichte

[Bearbeiten | Quelltext bearbeiten]

WinG wurde auf der Computer Game Developers Conference (CGDC, heute Game Developers Conference) 1994 erstmals zusammen mit WinDOOM einem breiteren Publikum an Entwicklern vorgestellt.[1]

## Details

[Bearbeiten | Quelltext bearbeiten]

WinG wurde maßgeblich dafür entwickelt, eine schnelle Grafikausgabe unter Windows zu ermöglichen.[2] DOS besaß den großen Vorteil, dass man ohne Probleme direkt auf den Grafikspeicher zugreifen konnte, was unter Windows über GDI nicht möglich war. Mit WinG wurde dies einheitlich und für spätere Windows-Versionen standardisiert ermöglicht. Die Einführung von WinG in Windows war seitens Microsoft auch nötig, da eine Nachfrage seitens 3rd Party Entwickler an einer schnellen Grafik API, die einen direkten Zugriff zur Grafikhardware erlaubt, vorhanden war und um 3rd Party Lösungen, die zu späteren Windows-Versionen inkompatibel geworden wären durch das Anbieten einer eigenen Lösung, zu verhindern. Durch WinG war es erstmals auch unter Windows möglich, komplexere Grafik-Algorithmen wie Double Buffering, Dirty Rectangles, Overdraw, und Fast Scrolling zu realisieren.

Mit `BitBlt()` und `StretchBlt()` führte die API zudem einige Blitting-Operationen ein, die die Anzeige von Bildern und Grafiken erleichtern sollte.[3]

Nach der Installation führt WinG einen grafischen Performanz-Test durch, in dem es eine Reihe von Funktionsaufrufe an die Grafikkarte durchführt und deren Zeit misst. Auf dem Bildschirm ist für einige Zeit ein Muster mit verschlungenen roten Linien zu sehen, die sich hin- und herbewegen. Wenn der Test abgeschlossen ist, werden die schnellsten Funktionen, die keine Artefakte verursachen, gespeichert, so dass der Test nur einmal ausgeführt werden muss.

WinG wurde durch DirectDraw abgelöst, welches im Gegensatz zu WinG die Hardwarebeschleunigungsfunktionen der Grafikchips unterstützte.

## Verwendung

[Bearbeiten | Quelltext bearbeiten]

Zu den ersten Spielen die WinG verwendet haben zählen Doom für Windows und Pinball.[4] Weitere Spiele sind bspw. Civilization 2.

## WinG Heute

[Bearbeiten | Quelltext bearbeiten]

Unter einem modernen Windows kann man seit Windows 95 die Funktion `CreateDIBSection()` verwenden und `StretchBlt()` und `BitBlt()` darauf anwenden um im Wesentlichen die gleiche Funktionalität von WinG unter einem modernen Windows zu erhalten.[5] Für eine Ausgabe, in der Hardwarebeschleunigung verwendet werden soll, sind modernere APIs wie bspw. Direct2D zuständig.

## Literatur

[Bearbeiten | Quelltext bearbeiten]

* Eric R. Lyons: Black Art of Windows Game Programming. Waite Group Press, 1995, ISBN 978-1-878739-95-7 (englisch).

## Weblinks

[Bearbeiten | Quelltext bearbeiten]

* Writing HOT Games for Microsoft® Windows™ - The Microsoft Game Developers’ Handbook

## Einzelnachweise

[Bearbeiten | Quelltext bearbeiten]

1. ↑ http://www.pcplayer.de/history/hefte/071994P.php Die Zukunft von MS-DOS und Windows PC Player 1994-07 S. 12
2. ↑ Video Game Newsroom Time Machine: OpenGL vs. Direct3D - Servan Keondjian & Casey Muratori (ab 0:21:39) auf YouTube, 7. Juni 2023, abgerufen am 25. Februar 2024 (Laufzeit: 133:29 min).
3. ↑ https://jacobfilipp.com/DrDobbs/articles/DDJ/1995/9513/9513g/9513g.htm Implementing Games for Windows Using the WinG API and the WaveMix DLL by James Finnegan Dr. Dobb's Journal Special Issue 1995 - GAMES PROGRAMMING
4. ↑ "Spiele-Schnittstelle WinG für Windows 95" PC Professionell 9/95 S. 156
5. ↑ Video Game Newsroom Time Machine: OpenGL vs. Direct3D - Servan Keondjian & Casey Muratori (ab 0:25:44) auf YouTube, 7. Juni 2023, abgerufen am 25. Februar 2024 (WinG Fähigkeit unter einem modernen Windows Betriebssystem; Laufzeit: 133:29 min).