WinG
В вычислительной технике, WinG это библиотека, которая была разработана для обеспечения высокой производительности графики в операционных средах Windows 3.x и, изначально, позиционировалась как компонент, облегчающий разработчикам игр переход на Microsoft Windows из устаревающей DOS,[1] позднее разработка была свёрнута в пользу DirectX.
Предпосылки появления
[править | править код]WinG исправила две проблемы. Первая проблема, заключалась в том, что Windows 3.x поддерживала только фактические устройства отображения, и не поддерживала создание контекстов устройств (DC) на основе независимых от этих устройств растровых изображений. Одним из основных ограничений оконного менеджера (GDI) было то, что он был доступен только для записи. Данные, однажды записанные, не могли быть прочитаны обратно. Вторая проблема заключалась в том, что вся отрисовка GDI была реализована в видеодрайверах Windows 3.x, включая отрисовку растровых изображений. Очевидно, что производительность варьировалась у разных водителей видеокарт.
Microsoft анонсировала WinG на конференции разработчиков игр 1994 года, продемонстрировав ее с портом Doom от id Software..[2] WinG стал доступен 21 сентября 1994 года.[3] WinG, хоть и представляла интерес, по-прежнему базировалась на предварительной отрисовке растровых изображений в оперативной памяти и выводе кадров только после завершения их рисования. В результате такого подхода, WinG была признанна устаревшей и была заменена на DirectX. Однако, в Windows NT 3.5 и Windows 95 появилась функция CreateDIBSection, обеспечивающая поддержку создания контекстов устройств на основе DIB, также и видеодрайверы в конечном счёте, улучшились.
Реализация
[править | править код]WinG представила новый тип контекстов устройств, называемый WinGDC,[4] который позволял программистам как читать, так и записывать в него напрямую, используя аппаратно-независимые растровые изображения (DIB) с драйвером wingdib.drv. По сути, это дало программистам возможность делать в Windows то, что они делали годами, без ограничений доступа к оборудованию, в DOS. Программисты могли записывать DIB в WinGDC, но, при этом, иметь доступ к отдельным частям изображения. Это означало, что можно было написать быстрые графические алгоритмы, обеспечивающие быструю прокрутку, перерисовку, анимацию частичным обновлением, двойную буферизацию и другие методы анимации. WinG также обеспечивает гораздо большую производительность при переносе графических данных в физическую память графического устройства. Поскольку WinG использовала формат DIB, можно было смешивать исходные вызовы GDI API и вызовы WinG.[4]
WinG выполяет тест графического оборудования/драйвера при первом запуске программы, чтобы определить лучший способ рисования DIB. Этот тест показывал окно, полное красных изогнутых линий, участки которых двигались при тестировании производительности. Как только WinG определяла самые быстрые вызовы, не вызывающие искажения графики, она сохраняла полученные данные, чтобы тест не нужно было выполнять снова.
Поддержка
[править | править код]Поддержка WinG из коробки (т.е. как отдельный API для Win32) была исключена во втором выпуске Windows 98 (с интегрированным DirectX 6), поскольку она ничего не делала, кроме простой проброски данных в API-интерфейсы Win32, которые она обертывала (включая CreateDIBSection). Библиотеки WinG иногда распространялись вместе с приложениями, достаточно было просто скопировать файлы wing.dll, wing32.dll, wingde.dll, wingdib.drv и wingpal.wnd в каталог system32 (для 32-разрядной версии Windows) или каталог SysWOW64 (для 64-разрядной версии Windows).
Список игр и приложений, использующих WinG API
[править | править код]- Adobe Photoshop 3.0 (1994)
- Adobe Photoshop 4.0 (1997)
- Alone in the Dark: Ghosts in Town (1996)
- CivNet (1995)
- Comix Zone (1995)
- Dark Seed II (1995)
- Disney's Animated Storybook: The Lion King (1994)
- Doom (1995)
- Dust: A Tale of the Wired West (1995)
- Fury3 (1995)
- Grant - Lee - Sherman: Civil War 2: Generals (1997)
- Heroes of Might and Magic II (1996)
- Industry Giant (1997)
- Microsoft Bob (1995)
- Microsoft Oceans (1995)
- Microsoft Return of Arcade (1996)[5]
- Monopoly (Westwood Studios) (1995)
- Nitemare 3D (1994)
- Noir: A Shadowy Thriller (1996)
- P.T.O. II (1995)
- The Rise & Rule of Ancient Empires (1996)
- This Means War! (1995)
- Sid Meier's Colonization (1995)
- Sid Meier's Civilization II (1996)
- SimCity 2000 (Windows 16-bit) (1995)
- SimTower (1994)
- Star Wars Screen Entertainment (1994)
- Sonic's Schoolhouse (1996)
- Time Gate: Knight's Chase (1996)
- Titanic: Adventure Out of Time (1996)
- Total Distortion (1995)
- Warcraft II: Tides of Darkness редактор карт
- Woodruff and the Schnibble of Azimuth (1995)
См. также
[править | править код]Примечания
[править | править код]- ↑ Hecker, Chris A Whirlwind Tour of WinG . Gamasutra (1 июня 1997). Дата обращения: 19 января 2009. Архивировано 27 февраля 2008 года.
- ↑ Wilson, Johnny L.; Brown, Ken; Lombardi, Chris; Weksler, Mike; Coleman, Terry (July 1994). "The Designer's Dilemma: The Eighth Computer Game Developers Conference". Computer Gaming World. pp. 26–31. Архивировано 2 октября 2019. Дата обращения: 22 ноября 2022.
- ↑ Eisler, Craig DirectX Then and Now (Part 1) . Craig's Musings (20 февраля 2006). Дата обращения: 19 января 2008. Архивировано из оригинала 11 июля 2012 года.
- ↑ 1 2 HOWTO: How to Mix GDI and WinG (MSKB125928) . Knowledge Base. Microsoft. Дата обращения: 19 января 2009. Архивировано 17 сентября 2008 года.
- ↑ Microsoft Return of Arcade 1996 review: RGB Classic Games . Дата обращения: 22 ноября 2022. Архивировано 22 ноября 2022 года.