Старый 19.11.2015, 22:25   #1
Eternity
Администратор
 
Аватар для Eternity
 
Регистрация: 21.11.2014
Сообщений: 2,965
Сказал(а) спасибо: 12
Поблагодарили 86 раз(а) в 80 сообщениях
Настроение: Daring
Репутация: 107
По умолчанию О принципе работы видеокарт

Введение
Сейчас наверное нет ни одного компьютерного игрока, который бы не знал о таких вещах как драйвер, DirectX и OpenGL. Однако еще десять лет назад эти слова не были столь известны, а наиболее известными драйверами в системе были пожалуй драйверы мыши и дисковода компакт-дисков.
Однако, несмотря на свою нынешнюю "популярность", многие люди достаточно смутно представляют как эти вещи "работают", как связаны между собой и какие роли выполняют.
В данной статье я хочу рассмотреть современное программное обеспечение видеокарт функционирующих на компьютерах под управлением операционной системы Windows, объяснить его основные свойства, принцип работы и назначение. Для этого мы затронем эволюцию видеокарт, неразрывно связанную с ней эволюцию их драйверов и программного обеспечения необходимого для их функционирования в определенных режимах. По ходу наших мыслей мы возможно также отвлечемся на другие косвенно связанные с нашей темой вещи. В завершение я постараюсь ответить на некоторые вопросы связанные с программным обеспечением видеокарт.

Как это было...
Первые IBM PC были оснащены видеоадаптером MDA (Monochrome Display Adapter) предназначенного для вывода исключительно текста. Вскоре за ним последовал CGA (Color Graphics Adapter) принесший с собой, можно сказать, эпохальный для игр графический режим 320х200 правда, пока, всего лишь при четырех цветах. Вслед за ним последовал EGA (Enhanced Graphics Adapter) принесший несколько новых режимов среди которых, для игрописателей, наиболее привлекательным был 320х200, но уже при целых 16 цветах. При этом достаточно легко было делать игры с возможностью выбора режима CGA/EGA - разрешение ведь было одно и то же. И вот, наконец, год 1987 - на свет появился VGA (Video Graphics Array) принеся с собой режим 320х200 при невероятных 256 цветах. И опять же, из-за одинакового разрешения, у разработчиков была возможность, по началу, делать игры с выбором видеорежима, на этот раз EGA/VGA. С некоторой натяжкой можно считать что этот режим был популярен в кругах производителей игр целых 10 лет (вспомним хотя бы "Command & Conquer Red Alert", вышедший в декабре 1996).
Отмечу, что в вышеприведенном абзаце приведены конечно не все видеокарты той эпохи. Не упомянуты, например, видеоадаптеры Hercules производства одноименной фирмы, а также видеокарты стандарта MCGA. Однако каких-либо принципиальных отличий в интересующем нас принципе работы от вышеприведенных карт у них не было.
А теперь господа, внимание - все эти карты функционировали без каких-либо драйверов! Да-да именно так. Всё объясняется достаточно просто - разработчики "железа" в то время следовали довольно жестким стандартам описывающим работу графических режимов, иначе говоря, все графические адаптеры, со стороны программы, выглядели одинаково на аппаратном уровне. Стандарт VGA стал стандартом-минимумом для всех видеокарт. С тех пор любая видеокарта должна была поддерживать стандарт VGA, если она рассчитывала на коммерческий успех. Даже сейчас мы пользуемся стандартом VGA до загрузки операционной системы отличной от MS-DOS, а зачастую и после.
После 1987 года, наступило "смутное время" SVGA. Распространено заблуждение что SVGA (Super Video Graphics Array) это тоже стандарт, однако это не так, через термин "SVGA" обозначают все режимы превышающие VGA. Новых стандартов не было. Таким образом не было четко определенного способа как скажем работать в графическом режиме 640х480 при 256 цветах. Нужно отметить, что проблема была не в "железе", большинство видеокарт как правило могло работать в таком режиме, а в отсутствии стандарта - каждая работала по своему. Таким образом, чтобы обеспечить такой режим работы, нужно было писать свой видеодрайвер для каждой (ну или почти каждой) видеокарты, что большинству разработчиков было не по силам, да и избежать проблем совместимости при этом всё равно было очень сложно. Поэтому очень много игр для MS-DOS по прежнему выпускалось под старый добрый VGA режим 320х200х256.
"Позвольте!" - скажете вы, "А как же... я вот помню - Warcraft 2, Duke Nukem 3D... все они работали под MS-DOS в 640х480 и даже больше!". "Виной", этому VESA (Video Enhanced Standards Association), эта организация по сути продолжила стандартизацию видеорежимов. Стандарт VESA 1.0, появившийся в начале 90-х годов, оговаривал работу в разрешениях от 640х480 до 1280х1024 при 16 и 256 цветах, VESA 1.1 добавил к этому стандарт для работы при 15 и 16 битном цвете (32K и 64K - HiColor), а VESA 1.2 при более знакомом нам 24/32 битном цвете (16,7M - TrueColor) и ввел еще одно разрешение - 1600х1200. Часто в настройках игр эти режимы так и обозначались - "VESA Modes".
VESA режимы также функционировали без каких-либо драйверов, однако требовали наличия VESA BIOS, что впрочем никак не выражалось внешне, т.к. реализован он был тоже на аппаратном уровне. Тем не менее стандарты VESA ограничивали разработчиков "железа" в гораздо меньшей степени чем предыдущие стандарты IBM. Сам стандарт VESA разрабатывался таким образом, что любая существующая карта может быть переделана в VESA-совместимую посредством загружаемого VESA-драйвера, заменяющего собой VESA BIOS. Однако таких драйверов на практике практически не существовало. Вызвано это было тем, что минимум до 1994 года потребности в 640х480х256 режиме не было, а к этому времени все новые разрабатываемые карты поддерживали как минимум VESA 1.0 (а больше, как правило, и не требовалось). К тому же в то время многие не то что не видели, но и не знали, что такое интернет, поэтому привычно "скачать" как это делается сегодня, этот самый VESA-драйвер, даже если бы он вышел, не получилось бы. Хотя конечно существовали и такие монстры какUniVBE (Universal VESA BIOS Extension) предназначенные для эмуляции VESA на старых видеокартах, но к тому времени как в них возникала потребность гораздо дешевле было приобрести полноценную VESA 1.2 карту, которая к тому же была оснащена целыми 2 Мб оперативной памяти.
Однако VESA режимы после 1995 года стали одним из возможных решений для реализации режимов SVGA.


В более глобальном плане драйверы открыли дорогу для значительного расширения возможностей графики и её ускорения. Связано это было с очень высокой гибкостью связки драйвер-видеокарта, когда новые возможности сначала могли реализовываться на уровне эмуляции в драйвере, а потом переносится и в аппаратную реализацию.
Интерфейс 3dfx Glide
Однако наиболее популярным интерфейсом для 3D-графики, первое время, был, известный многим, Glide фирмы 3dfx. Популярность Glide была вызвана тем, что карты поддерживающие его на аппаратном уровне целиком и полностью, в отличие от DirectX и OpenGL, появились сразу же (правда это были только карты 3dfx). Популярность же самих карт была вызвана тем, что они были в общем-то первыми картами 3D-ускорителями поддерживающими не только собственный Glide, но и Direct3D с OpenGL (начиная с Voodoo2). Glide будучи разработанным для вполне специфических карт показывал на них непревзойденную скорость. Однако по мере того как количество и популярность конкурентов росли, популярность Glide падала. 3dfx отчасти погубила собственная жадность - она не стала "открывать" Glide тем самым закрыв возможность встроить поддержку Glide в карты других производителей. Когда она приняла таки решение открыть Glide было уже слишком поздно. Естественно, что производители игр не могли выпускать игру только с поддержкой Glide (хотя наличие такой поддержки долгое время было правилом хорошего тона), но как минимум с поддержкой Direct3D и/или OpenGL. Если же ресурсы команды были ограничены то игра выпускалась обычно только под Direct3D или OpenGL. В числе недостатков Glide - отсутствие программной эмуляции, хотя это скорее было запланированным ходом 3dfx чем недоработкой.
Интерфейс OpenGL
OpenGL это промышленный стандарт интерфейса для 2D и 3D графики разработанный в начале 80-х годов фирмой Silicon Graphics. В отличие от Glide, OpenGL является открытым, так что любая фирма при желании может встроить его поддержку в свою операционную систему или видеокарту. В отличие от DirectX существующем только в мире Windows, OpenGL существует почти на всех системах, таким образом портирование (перенос) OpenGL игры на различные платформы было относительно простым. OpenGL как и DirectX предусматривал режим программной эмуляции (сколько "Quake 2" было в нем пройдено). В общем-то когда OpenGL появлялся он и был чисто программным, его основной целью было создание удобного интерфейса для создания реалистичной 2D/3D графики, а идея о его аппаратном ускорении возникла уже позже.
Принципиальных различий в принципе работу между Direct3D и OpenGL нет.


Ответим на некоторые вопросы связанные с интерфейсами.
Часто можно услышать вопрос в стиле: "А какой из интерфейсов лучше?" Ну я думаю, что сейчас вы и сами можете ответить на этот вопрос. Очевидно, что сравнивать их нельзя, потому что они не лучше и не хуже, они просто разные. У каждого из них есть свои достоинства и недостатки.
Еще один вопрос: "Может ли новая версия интерфейса влиять на скорость, если не учитывать поддержку новых аппаратных возможностей видеокарты?" Может. Ядро интерфейса это тоже программа, поэтому она может быть оптимизирована, в том числе и под новые инструкции процессора.
__________________
Eternity вне форума   Ответить с цитированием Вверх
Старый 19.11.2015, 22:43   #2
Марина
Форумчанин
 
Аватар для Марина
 
Регистрация: 10.12.2014
Сообщений: 698
Сказал(а) спасибо: 0
Поблагодарили 21 раз(а) в 21 сообщениях
Репутация: 31
По умолчанию Re: О принципе работы видеокарт

Нуда ) а у меня сейчас проскочил вопрос в голове , а что такое вообще интерфейс)))
Марина вне форума   Ответить с цитированием Вверх
Старый 19.11.2015, 22:54   #3
Eternity
Администратор
Топик Стартер ТС
 
Аватар для Eternity
 
Регистрация: 21.11.2014
Сообщений: 2,965
Сказал(а) спасибо: 12
Поблагодарили 86 раз(а) в 80 сообщениях
Настроение: Daring
Репутация: 107
По умолчанию Re: О принципе работы видеокарт

Интерфейс – это, говоря с умным выражением лица, определенная совокупность средств, которые обеспечивают взаимодействие всех аппаратных и программных составляющих вычислительной системы.
__________________
Eternity вне форума   Ответить с цитированием Вверх
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы можете создавать новые темы
Вы можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.



Текущее время: 01:30. Часовой пояс GMT +3.

 
 
vBCredits v1.4 Copyright ©2007 - 2008, PixelFX Studios
Рейтинг@Mail.ru