Przejdź do zawartości

WinG

Z Wikipedii, wolnej encyklopedii

WinG (wymawiane jako Win Gee) – interfejs programowania aplikacji zaprojektowany z myślą o wydajniejszej obsłudze grafiki w środowisku operacyjnym Windows 3.x. Choć początkowo przedstawiany jako forma ułatwienia portowania DOS-owych gier do systemów Microsoft Windows[1], został szybko zaniechany na rzecz DirectX.

Przegląd

[edytuj | edytuj kod]

WinG naprawiał dwa problemy. Pierwszym z nich był brak możliwości tworzenia w Windows 3.x Kontekstów Urządzeń (ang. Device Contexts, DC) bazujących na bitmapach niezależnych od urządzeń (ang. device-independent bitmap, DIB), tylko na podstawie rzeczywistych urządzeń do wyświetlania grafiki. Głównym ograniczeniem DC związanych z komponentem Graphics Device Interface (GDI) była wyłącznie możliwość zapisu. Dane, raz zapisane, nie mogły zostać w żaden sposób pobrane. Drugi problem stanowiło to, że rysowanie GDI było implementowane w sterownikach do kart graficznych dla Windows 3.x, co zawierało także rysowanie bitmap. Wydajność procedur rysowania obiektów nie była jednolita i różniła się między sterownikami.

W wywiadzie w 2000 roku Alex St. John, jeden z twórców DirectX, stwierdził:

WinG stanowił technologię powstałą przez Chrisa Heckera w grupie badawczej i w tym czasie był jednym z małych projektów Microsoft Skunkworks, dyskretnym i dziwnym. Zasadniczo było to naprawianie zepsutych sterowników Windows by działały szybciej i w stopniu bardziej akceptowalnym. Używając go byliśmy w stanie stworzyć API wideo pozwalające na działanie DOOM-a pod Windowsem prawie tak szybkie jak w DOS-ie.
WinG was a technology being built by Chris Hecker in the research group, and at the time it was one of the small Microsoft Skunkworks projects, very low profile and off-the-wall. Basically it was fixing broken Windows drivers to make them run faster and more acceptably. Using it, we were actually able to create a video API that could run DOOM almost as fast under Windows as it did in DOS.

— [2]

Microsoft zapowiedział WinG na Game Developers Conference w 1994 roku, demonstrując jego możliwości z portem Dooma opracowanym przez id Software[3]. WinG wydano 21 września 1994 roku[4]. Pomimo bycia interesującym, fundamentalną podstawą WinG było wciąż rysowanie bitmap w pamięci i przesyłanie wyjściowe klatek po zakończeniu rysowania. Doprowadziło to do porzucenia tego komponentu i opracowania DirectX. Jednakże systemy Windows NT 3.5 oraz Windows 95 wprowadziły CreateDIBSection celem wprowadzenia wsparcia do tworzenia DC bazujących na DIB, a sterowniki graficzne uległy ulepszeniu.

Implementacja

[edytuj | edytuj kod]

WinG wprowadził nowy rodzaj DC, nazywany WinGDC[5], pozwalający programistom na bezpośredni zapis i odczyt, wykorzystując DIB ze sterownikiem wingdib.drv. Faktycznie dało to programistom możliwość robienia pod Windowsem tego, co robili przez lata bez ograniczeń w dostępie do urządzeń w DOS-ie. Mogli zapisywać DIB do WinGDC i wciąż mieć dostęp do pojedynczych bitów danych obrazu. Oznaczało to możliwość tworzenia algorytmów do szybkiego przewijania, rysowania obiektów na wierzchu innych, „brudnych” prostokątów, podwójnego buforowania oraz innych technik animacji. WinG dostarczał również dużo lepszą wydajność podczas blitowania(inne języki) danych graficznych do pamięci fizycznego urządzenia graficznego. Ponieważ WinG używał formatu DIB, istniała możliwość mieszania oryginalnych odwołań API GDI i odwołań WinG[5].

WinG wykonywał także test profilowania sprzętu/sterownika graficznego przy pierwszym uruchomieniu danego programu w celu określenia najlepszego sposobu rysowania DIB. Test ten wyświetlał okno dialogowe pełne czerwonych krzywych linii, których fragmenty poruszały się podczas trwania testu wydajności[a]. W momencie gdy WinG określił najszybsze odwołania nie powodujące zniekształcenia grafiki, następowało zapisanie profilu bez potrzeby powtórnego wykonywania testu.

Wsparcie techniczne

[edytuj | edytuj kod]

Gotowe wsparcie dla WinG (tj. jako oddzielne API do Win32) zostało usunięte w systemie Windows 98 Wydanie drugie (który posiadał zintegrowany DirectX 6), ponieważ nie robiło ono nic oprócz przekazywania interfejsów API Win32, dla których było wrapperem (w tym CreateDIBSection). Do niektórych aplikacji czasami dołączano biblioteki DLL WinG. W takim przypadku wystarczyło po prostu skopiować pliki wing.dll, wing32.dll, wingde.dll, wingdib.drv oraz wingpal.wnd do folderów system32 (dla 32-bitowych wersji Windows) lub SysWOW64 (dla 64-bitowych wersji Windows) aby przywrócić obsługę składnika przez system.

Lista aplikacji korzystających z API WinG

[edytuj | edytuj kod]

Zobacz też

[edytuj | edytuj kod]
  1. Zobacz zrzut ekranu ukazujący przebieg testu na: Andrew Nile, Microsoft WinG [online], AN. Blog, 23 sierpnia 2018 [dostęp 2025-09-24] (ang.).

Przypisy

[edytuj | edytuj kod]
  1. Chris Hecker, A Whirlwind Tour of WinG [online], Game Developer, 1 czerwca 1997 [dostęp 2025-09-24] (ang.).
  2. Bob Colayco, Alex St. John Interview, firingsquad.com, 7 marca 2000 [zarchiwizowane 2009-10-06] (ang.).
  3. Johnny L. Wilson, Ken Brown, Chris Lombardi, Mike Weksler, Terry Coleman, The Designer's Dilemma: The Eighth Computer Game Developers Conference [online], Computer Gaming World, lipiec 1994, s. 26–31 (ang.).
  4. Craig Eisler, DirectX Then and Now (Part 1), Craig's Musings, 20 lutego 2006 [zarchiwizowane 2012-07-11] (ang.).
  5. a b Microsoft, HOWTO: How to Mix GDI and WinG, Microsoft Support [zarchiwizowane 2012-10-22] (ang.).
  6. Microsoft Return of Arcade 1996 [online], RGB Classic Games [dostęp 2025-09-24] (ang.).

Linki zewnętrzne

[edytuj | edytuj kod]