Причем можно выбирать между повышенной контрастностью и повышенной яркостью. Процессор DDP3020 производит 10-разрядную обработку цвета, а значит, при отображении, скажем, шкалы серого мы имеем 1024 градации вместо 256. Яркость проектора, конечно, низковата, зато невысок и шум системы охлаждения. В затемненных помещениях производитель рекомендует «экономный режим», но, похоже, он устроит лишь сов и филинов. В комплект входит ПДУ, позволяющий настраивать цветовую температуру, четкость, коррекцию трапециевидных искажений и другие параметры.
ЖК-мониторы Prestigio P776/P796
диагональ 17 дюймов (P776) и 19 дюймов (P796)
разрешение 1280x1024
яркость 250 кд/кв. м
контрастность 450:1
углы обзора 170 градусов по обеим осям
время отклика 12 мс
вход D-Sub
встроенные динамики 2x2 Вт
цена $290 (P776) и $360 (P796)
Тонкое прочное стекло, за которым прячется ЖК-экран, не только защищает его от повреждений, но и повышает интенсивность отображаемых цветов и способствует меньшей усталости глаз при длительной работе. Мониторы можно вешать на стену, используя крепление VESA. Заявленные характеристики могут означать, что матрицы изготовлены не по технологии TN: яркость низка и время отклика по современным меркам великовато, зато выше всяких похвал контрастность и углы обзора. Впрочем, доподлинно установить природу матриц не удалось. Одно замечание: казалось бы, цифровым DVI-входом в наше время должны оснащаться даже бюджетные модели, но увы…
Кард-ридер Kingston 15-in-1 Hi-Speed
форматы CF Type I и II, SD, miniSD, MMC, MMCmobile, MMCplus, RS-MMC, MS, MS Pro, MS Pro Duo, SM, Microdrive
формат microSD через адаптер для разъема SD
формат MMCmicro через адаптер для разъема MMC
интерфейс USB 2.0 Hi-Speed
габариты 88x56x16 мм
Окрестив свое детище «15-in-1», производитель чуть слукавил. Ну не набирается тут пятнадцати безусловно поддерживаемых форматов. Во-первых, все, что идет через адаптеры, «не считается», а во-вторых, Microdrive не является отдельным форматом, поскольку использует интерфейс CompactFlash Type II. Кард-ридер прекрасно подходит для работы с быстрыми карточками (скажем, SD Ultimate со скоростью записи 133x). Он может заинтересовать профессиональных фотографов или энтузиастов, которые часто имеют дело с огромными RAW-фотографиями и работают с флэш-картами разных форматов.
Мобильный видеорекордер Archos AV500
жесткий диск объемом 100 Гбайт
4-дюймовый ЖК-дисплей с разрешением 480x272
запись MPEG-4 с разрешением до 640x480@30, AVI
воспроизведение MPEG-4 с разрешением до 720x480@30, AVI, WMV9
запись аудио в WAV (PCM, ADPCM)
воспроизведение аудиоформатов MP3, WMA, WAV
поддержка изображений JPEG и BMP
встроенный FM-тюнер
порт USB 2.0 Host
время жизни батареи до 15 часов (музыка), 4,5 часа (видео)
габариты 76x124x24 мм
вес 315 г
Этот мальчик с пальчик умеет записывать видео с телевизора, VHS-магнитофона, DVD-плейера или, например, спутникового приемника. Встроенный планировщик позволяет запрограммировать запись на месяц вперед. Через порт USB Host можно переносить файлы с внешнего носителя (которому, конечно, потребуется блок питания, так как Archos работает от батарей). Прилагаемый софт может синхронизировать контент с Windows Media Player 10 и конвертировать его в поддерживаемые устройством форматы. Для использования видеорекордера в качестве диктофона достаточно подключить микрофон.
Карманный медиаплейер Archos Gmini 500
40-Гбайт жесткий диск
4-дюймовый ЖК-экран с разрешением 480x272
воспроизведение видео до 720x480@30
воспроизведение аудио в форматах MP3, WMA, WAV
показ изображений JPEG и BMP
порт USB 2.0 Host
время жизни батареи до 15 часов (музыка), 5 часов (видео)
встроенные динамик и микрофон
габариты 76x124x24 мм
вес 320 г
Gmini 500 — незаменимый попутчик, позволяющий коротать дорогу за просмотром фильмов и фотокарточек и прослушиванием музыки. Кино, музыку и фотографии можно скачать с компьютера или с интернет-сервисов. Gmini 500 оснащен телевизионным выходом, может записывать аудиотреки, но, в отличие от AV500, не умеет захватывать видео. Благодаря наличию хост-порта USB к плейеру можно напрямую подключать цифровые камеры для передачи изображений. В качестве дополнительных аксессуаров производитель предлагает FM-тюнер, внешний микрофон и пульт ДУ в одном устройстве, автомобильный адаптер питания и аудиоадаптер для записи с любого аналогового источника.
Сканер Canon DR-2580C
контактный КМОП-сенсор
источник света СИД (RGB)
разрешение до 600x600 dpi
скорость до 25 стр./мин. (черный, 256 градаций серого)и 13 стр./мин. (24-битный цвет)
функция дуплексного сканирования
автоматическая или ручная подача
формат документов от 53x70 до 216x355,5 мм
интерфейс USB 2.0
габариты 302x171x81 мм
Компактная производительная модель позволяет сканировать твердые оригиналы (например, картон или пластиковые карты) и поддерживает дуплексное сканирование (при этом все скорости удваиваются). Сканер оснащен функцией автоматического удаления следов отверстий с полученного изображения при сканировании страниц из подшивок. Несколько настраиваемых кнопок позволяют одним нажатием отсканировать документ и отправить на печать, на компьютер или послать по электронной почте. В комплект входят приложения CapturePerfect 3.0 и Adobe Acrobat 7.0.
Сканер Canon DR-5010C
источник света СИД (RGB)
разрешение до 600x600 dpi
скорость 50 стр./мин.
автоматическая или ручная подача
входной лоток на 100 листов
формат документов от 53x70 до 300x432 мм
интерфейсы SCSI-III и USB 2.0
габариты 398x312x191 мм
Один из самых небольших в своем классе, этот настольный сканер формата A3 предназначен для крупных рабочих групп: ежедневная нагрузка — до 6 тысяч страниц. Одинаковая с черно-белым режимом скорость цветного сканирования достигается применением 3-линейного контактного КМОП-сенсора. Для нужд OCR сканер умеет «выбрасывать» указанные пользователем цвета и пропускать пустые страницы. При дуплексном сканировании скорость для всех режимов (всего их три — монохромный, 256 градаций серого и цветной) составляет 100 страниц в минуту. Сканер может автоматически распознавать нестандартные стра-ницы в пачке и пропускать пустые.
Системная плата EPoX EP-9GF6100-M
форм-фактор Micro ATX, Socket 939
поддержка процессоров AMD Sempron, Athlon-64/FX, Athlon X2
интегрированная графика GeForce 6100
поддержка DireсtX 9.0c, Shader Model 3.0
два пиксельных шейдера и один вершинный
один разъем PCIe x16, один PCIe x1, два разъема PCI
четыре разъема DIMM (DDR 400), до 4 Гбайт памяти
Хотя в материнской плате стоит чипсет GeForce от одной из ведущих графических фирм, производитель все же не постеснялся добавить разъем PCIe x16, куда можно установить более мощный видеоадаптер. Имеет место быть новомодный интерфейс SATA II с поддержкой RAID и четырьмя каналами для устройств UDMA 133. За 5.1-канальный звук отвечает контроллер Realtek ALC655, а за подключение к сети — чип PHY Realtek RTL8201CL F Ethernet. К услугам внешних устройств — восемь портов USB 2.0. В комплект входит программа Thunder Probe, определяющая напряжение и температуру процессора, а также Smart Fan, оптимизирующая скорость вращения вентилятора и тем самым уменьшающая шум.
Домашний кинотеатр Samsung HT-TKP75
DVD-проигрыватель
воспроизведение CD, MP3, WMA, JPEG, VCD, DivX
декодеры DD, DTS, Dolby ProLogic II
выходная мощность динамиков 800 Вт (5x130 Вт + 150 Вт)
порт USB 2.0 Host
функция караоке
Самое необычное в этой модели — наличие USB-порта, через который можно подключать внешние устройства — например, флэш-брелок или жесткий диск (отпадает необходимость нарезать музыку или фильмы на CD-болванки), MP3-плейер или фотокамеру и прочее. Кинотеатр принимает AM/FM-программы (память на тридцать станций). В комплекте — микрофон и DVD-диск для караоке с четырьмя тысячами песен.
Compro VideoMate X800
С чем трудно работать маркетологам, так это с ТВ-тюнерами. Ну не принято мерить у тюнеров частоты процесcора, объем памяти и мегапикселы разрешения. Не удалось в этой области сформировать у людей устойчивый ассоциативный ряд: больше — значит лучше. Не за что уцепиться рекламщику, чтобы влиять на ленивое и нелюбопытное сознание потребителя. Поэтому для привлечения клиентов — нас с вами — разработчикам приходится искать нетривиальные пути, придавая своим продуктам все новые и новые функции.
Обычно расширение функциональности происходит на программном уровне, ибо «проапдейтить» программное обеспечение, добавив пару ненужных, но внешне привлекательных функций, гораздо проще и дешевле, чем переделывать аппаратную часть тюнера. Однако, как вы уже догадались, сегодня речь пойдет о другом продукте — TV/FM-тюнере Compro VideoMate X800, который изобилует как раз нестандартными аппаратными решениями.
Тюнер оригинален даже внешне. Первое, что бросается в глаза, — отсутствие классического экранированного ВЧ-блока. Вместо него наличествует полупроводниковый одночиповый ВЧ-блок Xceive XC2028 (одна крошечная микросхема, маркировку которой без лупы и не разглядишь!). Плата тюнера выполнена в низкопрофильном форм-факторе, что позволяет использовать ее в любых системных блоках — даже в компактных barebone-системах. Ради компактности уменьшено и количество гнезд на торцевой панели, а стандартные разъемы RCA, S-Video и Audio I/O 3,5 мм вынесены оттуда посредством 9-пинового переходника Mini-DIN. Аналогичное решение часто используется в мобильных USB— и PCMCIA-тюнерах. Обрабатывает изображение не только 10-битный АЦП Conexant CX23880-19[На официальном сайте www.comprousa.com в спецификациях тюнера почему-то указан чип CX23883], но и дополнительная микросхема Weltrend WT8850, разделяющая видеосигнал на цвето-яркостные составляющие. Наконец, не могут не привлечь внимания две пары двухпиновых контактов, предназначенные для управления питанием компьютера. Это одно из наиболее эффектных умений тюнера. Как известно, в АТХ-системах питание на материнскую плату подается всегда, даже если компьютер выключен. Сигнал о его включении получает непосредственно материнская плата и передает в блок питания. Упомянутыми контактами тюнер «встраивается» в цепь между кнопкой включения и платой и может будить ПК по собственному желанию. Теперь неуверенные в себе пользователи наконец-то обретут возможность включать компьютер «как телевизор» с помощью тюнерского[Видимо, по мнению специалистов Compro, именно нетрадиционный метод включения вызывает у людей наибольшие проблемы при переходе от телевизора к компьютеру] пульта ДУ, а бодрые энтузиасты смогут впрок планировать захват. Уезжаете вы, например, отдыхать в Катманду, а новостей российских пропускать не желаете — вдруг революция случится? Настраиваете софт так, чтобы каждый вечер тюнер включал компьютер, делал захват и снова выключался. Вернувшись в отчизну, обнаружите на жестком диске пару десятков гигабайт прошедших времен. Впрочем, эта социальная идиллия возможна далеко не на всех материнских платах, а только на АТХ с поддержкой функции Wake up by PCI Device или аналогичной[На случай глюков предусмотрены джамперы для отключения функций автовключения].
Как бы то ни было, на этом конструктивные диковины заканчиваются, если, конечно, не считать таковой наличие внутреннего аудиовыхода, ставшего в последнее время стандартом де-факто.
Тюнер радует еще и щедрым комплектом поставки. Кроме самой платы, в коробке находится:
три CD: установочный с драйверами и русскоязычным ПО, Ulead DVD Movie Factory, Ulead Media Studio 8 SE;
шнур для внутреннего соединения со звуковой платой;
шнур для внешнего соединения со звуковой платой;
кабель для подключения к материнской плате;
сменная торцевая панель для установки в компактные системные блоки;
ИК-приемник и пульт ДУ;
FM-антенна;
англоязычное руководство пользователя (русскоязычное находится на установочном CD);
переходники для подключения внешних устройств и TV-антенны.
Все это добро было установлено в мой тестовый компьютер следующей конфигурации:
процессор Celeron 1.7@2,0 ГГц;
память 768 Mбайт PC2100 DDR;
материнская плата Abit IT7;
видеокарта Radeon 7500;
жесткий диск WD 200 Гбайт;
звуковая карта SB Live! 24 bit;
блок питания Chieftek 300 Вт;
свежеустановленная Windows XP SP2 Rus.
К сожалению, программное обеспечение нельзя отнести к плюсам Х800. Неприятности начались с самого начала. В стандартной конфигурации ПО инсталлировалось минут десять, на винчестере появилось аж пять драйверов для компонентов тюнера, причем запуск мастера установки оборудования инициализировался раньше, чем нужные компоненты скопировались в системную директорию Windows, так что пришлось откатывать его назад и начинать сначала. В процессе установки ПО заменило какие-то системные файлы Windows, отчего она начала ругаться и требовать оригинального диска для их восстановления. Поскольку искать диск было лень, сообщение я проигнорировал, после чего Windows Media Player 9 (который тоже зачем-то ставится автоматом) инсталлироваться отказался… В довершение всего в конце установки программа настойчиво порекомендовала перезагрузиться. В общем, до лаконичности инсталляторов современных конкурентов X800 очень далеко.
Далеко ему и до их функциональности. Да, софт педантично следует тенденциям спроса и имеет все популярные функции[Не забыт и timeshift, куда же без него], но сделаны они как бы нехотя и через силу. Слезы наворачиваются на глаза, когда, глядя на полупустые окна конфигурации Compro PVR2, вспоминаешь настройки Behold TV… Мне так и не удалось не только найти настройки метода deinterlace, но даже упоминания о том, какой метод используется[На сайте производителя указан метод deinterlace. — Прим. ред.]. Несмотря на то что Compro PVR2 формально позволяет захватывать видео, отсутствие индикации и сколько-нибудь глубоких настроек процесса ставит крест на серьезном использовании этой функции. Эстетический вид «дружественного и интуитивно понятного интерфейса» вы можете оценить самостоятельно (рис. 1).
К счастью, тюнер корректно поддерживается сторонними программами. Мне без труда удалось осуществить захват по всем канонам жанра с помощью iuVCR, так что энтузиасты смогут подыскать альтернативное ПО на свой вкус. А непритязательные пользователи останутся довольны и Compro PVR2.
В одном из предыдущих обзоров я как-то сказал, что при уверенном приеме качество изображения всех последних тюнеров, попадавших ко мне на тестирование, стабильно высокое и без специального намерения отличить один от другого не удастся. Вот и накаркал! Из-за полупроводникового ВЧ-блока и аппаратного цвето-яркостного (Y/C) разделителя X800 дает как минимум специфическую картинку. По субъективным ощущениям, чувствительность ВЧ-блока Xceive XC2028 чуть ниже, чем у современных классических аналогов, однако делать из этого какие-либо обобщения было бы самонадеянно. Огрехи в приеме незначительны, а после дополнительной Y/C-обработки они и вовсе становятся незаметными. Тем более после «первого свидания» следует воздержаться от скоропалительных оценок полупроводниковой технологии в целом, так что позвольте ограничиться аккуратным выводом: ВЧ-блоки Xceive сравнимы по качеству приема с классическими аналогами.
За дальнейшую обработку сигнала отвечают 10-разрядный АЦП CX23880 и чип Y/C-разделения. Первый давно и успешно используется в самых разных моделях тюнеров, не подвел он и Х800. А вот на работе Y/C-разделителя Weltrend WT8850 стоит остановиться. В настройках ПО тюнера есть возможность выбрать один из трех режимов обработки сигнала: универсальный «Режим ТВ» для большинства телепередач, «Режим шумоподавления» и «Режим повышенной четкости» (облегчает восприятие текстовой и графической информации). Также можно выбрать ручную настройку, при которой запускается отдельная утилита Tweak Y/C (рис. 2). Здесь можно тонко настроить степень шумоподавления, задержку Y— и C-компонент друг относительно друга и прочие параметры. При работе со сторонним софтом утилиту можно запустить вручную — она живет отдельной жизнью и, хоть и влияет на тюнер в реальном времени, никак не отражается на стабильности его работы.
Вне зависимости от выбранного режима работы Y/C-разделение всегда сказывается на изображении. Картинка слегка «пластмассовая», а контуры движущихся объектов оставляют легкие следы. Подобные эффекты наверняка знакомы тем, кто занимался захватом и кодированием видео с помощью ТВ-тюнера. Именно таким становится изображение, прошедшее через цепочку «шумодавов» и подготовленное к компрессии. Всякий желающий может смоделировать похожий эффект, последовательно обработав какую-либо видеозапись в VirtualDUB’e фильтрами Chroma Noise Reduction (default) и Dynamic Noise Reduction (8—10). Впрочем, на восприятии видео в динамике эти эффекты особо не сказываются, а вот любители оцифровки с ТВ и VHS наверняка будут рады: при более тонкой ручной настройке аппаратная постобработка вполне сможет заменить программную. А это означает заметное (до пяти раз) уменьшение времени окончательного кодирования захваченного материала.
Собравшись пропеть новаторской аппаратной части тюнера дифирамбы, я чуть было не поплатился за торопливость: открылась пренеприятная особенность, имеющая явно «железные» корни. На некоторых каналах в левой части экрана возникают паразитные флуктуирующие розовые искажения (рис. 3). По неофициальной информации, проблема аппаратная и может быть решена перепайкой тюнера (конечно, с потерей гарантии).
Уже после тестирования я общался со специалистами из Compro, которые сообщили, что аппаратная проблема с тюнером решена — заменен один из резисторов, и в поставках для России идет новая версия. Кроме того, на сайте компании появилось новое ПО, с помощью которого теперь возможна произвольная сортировка каналов. — С.Л
OpenGL vs. Direct3D
OpenGL и Direct3D — две основные на сегодняшний день аппаратно-ускоряемые библиотеки для создания компьютерной трехмерной графики. Перед каждым начинающим 3D-программистом встает вопрос: какой из двух вариантов API выбрать? Вопрос этот совсем не прост, собственного опыта для принятия осознанного решения, как правило, не хватает. И хотя на форумах такие темы обсуждаются регулярно, почерпнуть из них информацию порой непросто, поскольку «советы бывалых» обычно основываются на личных предпочтениях.
Итак, что же выбрать начинающему «тридешнику»? Ответ зависит от трех факторов: от поставленной задачи, от умений программиста и от того, чем он намерен заниматься в дальнейшем. С первым фактором все более или менее просто: начинающий 3D-программист может быть или совсем зеленым новичком, или обладать каким-то опытом в других областях. Второй фактор более расплывчат и во многом зависит от первого, ведь только-только ступая на стезю программирования, очень трудно четко поставить задачу, обычно хочется написать что-то такое, чтоб было красиво и все двигалось и блестело; из этого мы и будем исходить, советуя ту или иную библиотеку. В случае же с опытным программистом дела обстоят иначе; тут может потребоваться или визуализация результатов какой-то вычислительной программы, или внезапно появился выгодный заказ, да вот беда, с необходимостью 3D-графики. Ну а третий фактор очень грубо можно разделить на два направления: первое — разработка игр и все что с этим связано; второе — написание приложений для работы с 3D-графикой и визуализация научных данных (скромно назовем все это научной графикой). Третий фактор тоже тесно связан с первым: практически все «молодые и перспективные» хотят писать игры, ну так уж повелось; и в общем-то они правы — игровая отрасль не только интересная и быстро развивающаяся, но и гораздо лучше представлена на территории нашей страны. В самом деле, все слышали об отечественных играх и компаниях их разрабатывающих, но мало что известно об успехах россиян на поприще научной графики.
Теперь подробнее остановимся на истории каждой из технологий. Начнем с Direct3D. В те давние времена, когда Windows только входила в нашу жизнь, абсолютное большинство игр писалось еще под DOS, а Windows 3.1 не предоставляла эффективных средств доступа к видео— и звуковым устройством. Такое положение дел не устраивало Microsoft, и корпорация вознамерилась сделать 3D API, который стал бы удобным инструментом в руках разработчиков игр. То ли из-за нехватки времени и ресурсов, то ли по другим причинам Microsoft решила не изобретать велосипед, а использовать наработки компании RenderMorphics. Это был совсем маленький проект, на его базе была создана небольшая библиотека Game SDK, которая и стала впоследствии именоваться DirectX 1.0. И как это ни прискорбно для Microsoft, первому DirectX не суждено было стать распространенным средством разработки игр. Причин тому было множество, и если с плохой структурой и сложностью использования еще можно было мириться, то многочисленные ошибки и неповоротливость написанных игр ставили крест на широком распространении этой технологии. Но не в правилах Microsoft сдаваться, и она немедленно принялась совершенствовать свое неудачное детище. Первой по-настоящему принятой программистским сообществом версией DirectX стала 7.0. Этот продукт был лишен большинства из «детских болезней» своих предшественников: научился почти полностью использовать потенциал видеокарт, его интерфейс стал гораздо приятнее, и, главное, DirectX 7.0 был стабилен (сейчас существует DirectX 9.0 — мощное и удобное средство разработки). Вы, наверное, обратили внимание, что я периодически называю вроде бы одно и то же по-разному — то DirectX, то Direct3D. На самом деле все просто: Direct3D — это часть DirectX. До седьмой версии в DirectX было два графических инструмента: Direct3D и DirectDraw, для трех— и двухмерной графики соответственно. DirectX содержит и другие полезные компоненты — например, DirectSound и DirectPlay. Первый используется для воспроизведения звуков, а второй облегчает жизнь разработчику игр: он берет на себя работу с вводом и даже включает сетевые интерфейсы.
История OpenGL ведется с 1992 года. Компания Silicon Graphics создала его как открытый стандарт. Отсюда и первая часть названия, а GL означает Graphic Library (графическая библиотека). На данный момент OpenGL находится под контролем комитета Architectural Review Board (ARB), куда входят представители наиболее влиятельных в 3D-секторе корпораций — nVidia, ATI, SGI, Apple, Intel, id Software и, что особенно интересно, Microsoft. ARB является по сути некой бюрократической машиной, чья задача — вводить в стандарт OpenGL новые возможности. Для этого был создан механизм расширений. Как и любая бюрократическая машина, ARB работает медленно и неповоротливо, что стало главной проблемой OpenGL, который просто не может угнаться за стремительным развитием графических технологий. Достаточно сказать, что между выходом версий 1.0 и 1.4 прошло больше десяти лет! Сейчас этот стандарт морально устарел. Хотя все новые возможности современных видеоускорителей доступны через расширения ARB, пользоваться ими, прямо скажем, неудобно.
OpenGL, создававшийся для профессионального сектора, прочно в нем закрепился во многом благодаря своей переносимости, а вот нишу PC-игр практически полностью уступил своему конкуренту. Изменится ли эта ситуация? Чтобы существенно потеснить DirectX в game-секторе, ARB необходимо вывести OpenGL на современный уровень, и, надо сказать, комитет не сидит сложа руки: грядет так долго ожидаемая вторая версия GL, ее создатели хотят снова создать стандарт на десятилетие вперед. А что же Microsoft? Попытается ли компания захватить и профессиональный сектор? Это возможно только с выходом DirectX под другие операционные системы, что вряд ли случится.
Перейдем к сравнению технологий. DirectX построен по объектно-ориентированной схеме, а OpenGL по процедурной. Что лучше? Программа на GL одинаково «хорошо» выглядит и на C++, и на чистом C, чего не скажешь о DX (хотя это надуманное преимущество, сейчас мало кто пишет на C, особенно под Windows). А вот простота архитектуры GL — неоспоримый плюс: GL работает исключительно с примитивами (треугольники, отрезки и точки) и управляется набором булевых переменных, которые позволяют включать или отключать некоторые функции — например, накладывать текстуру или нет, использовать ли освещение и т. д. Код для отображения «вашего первого треугольника» занимает примерно пятьдесят строк. В DX эта цифра куда больше. С одним-то треугольником у GL все хорошо, но как только захочется использовать что-нибудь из современных 3D-эффектов — появляются расширения GL, и еще недавно простой и понятный код тонет в непонятных и ничего не значащих для человека, не посвященного в тайны 3D-графики, строках.
Как ни странно, ведутся споры о производительности. Проверить это проще простого, но зачем? — ведь результат легко предсказуем. Он будет одинаков для обеих библиотек, поскольку сейчас практически все функции реализуются напрямую через аппаратные ускорители. Расхождение результатов может быть только из-за погрешности измерений; сюда я отношу и оптимизацию тестирующего кода, и специфику конкретных драйверов, но в целом для выполнения кода на GL и DX видеокарта должна выполнять одни и те же действия, а значит, и дискуссии о быстродействии беспочвенны. Конечно, можно копать глубже и спорить о качестве шейдерных компиляторов HLSL[High-level Shader Language — С-подобный язык для написания шейдеров в DirectX 9.0] и GLSL[OpenGL Shading Language — аналог HLSL для OpenGL], но мы не будем лезть в такие дебри, тем более что оба решения далеки от совершенства.
Что мы имеем: львиная доля создателей игр выбирает DirectX за удобную поддержку современных возможностей, остальные предпочитают OpenGL — за переносимость и простоту написания программ. Ситуация в общем-то нормальная, если вспомнить, для чего создавалась каждая из технологий. Но если мы обратим внимание, что Doom III, самая нашумевшая игра последнего времени, написана на OpenGL, то поневоле закрадывается подозрение, что не все так просто. Может быть, в id Software знают какой-то секрет, делающий применение OpenGL предпочтительнее? Нет, просто команда разработчиков уже привыкла работать на нем. Это еще раз красноречиво говорит о том, что GL мало чем уступает DirectX.
Я много говорил о возможностях современного железа, но ни разу не упомянул о том, что же это за возможности и что для их использования предоставляют OpenGL и DirectX. Прежде всего, нынешние видеокарты — это программируемые устройства. Теперь некоторый код можно выполнять прямо на графическом процессоре (GPU). Эти программы называют шейдерами. Они позволяют создавать сложнейшие эффекты в реальном времени. Изначально эти программы можно было писать только на «фирменных» языках производителей видеокарт — ATI и nVidia. Оба языка очень похожи на ассемблер, но, увы, несовместимы. А кому захочется писать два разных кода для реализации одного и того же эффекта? И вот в DirectX 8.0 появляется универсальный язык программирования шейдеров. Он тоже похож на ассемблер, но позволяет обойтись одним шейдером для обоих типов видеокарт. И снова закавыка: много ли людей любят программировать на языках низкого уровня? И вот Microsoft представляет в своем DX 9.0 уже C-подобный язык HLSL. ARB в ответ выкатил аналогичную технологию GLSL. Как уже говорилось, обе эти технологии далеки от совершенства, прежде всего из-за слабой оптимизации компиляторов. Например, создатели игры Chronicles of Riddick (кстати, использовавшие OpenGL) для увеличения производительности написали все шейдеры в двух вариантах, на родных ассемблероподобных языках от ATI и nVidia. Это выглядит странным, так как обычные компиляторы показывают совсем неплохие результаты.
Итак, у нас две библиотеки с практически одинаковыми возможностями и быстродействием. Отличия лишь в сложности написания кода. И даже здесь явного лидерства нет. Все зависит от уровня используемых в программе эффектов. Если нам достаточно базовой функциональности OpenGL (то есть мы не используем расширений), то разумнее использовать именно GL, а если дело дошло до продвинутых эффектов, тут предпочтительнее Direct3D. Но с появлением второго GL ситуация может в корне измениться, так как переход на новую версию избавит GL от большинства недостатков. Но Microsoft тоже не будет стоять на месте, и вполне возможно, что к моменту своего выхода OGL 2.0 уже устареет. Да и в дальнейшем для успешной конкуренции с DX ARB понадобится существенно переработать механизм внесения изменений в библиотеку, чтобы сделать OpenGL более динамично развивающимся.
Так что же выбрать начинающему 3D-программисту? Молодому поколению я, скрепя сердце, посоветую DirectX. Прежде всего потому, что знание DX поможет стать создателем игр. Все российские компании, разрабатывающие игры, используют эту технологию. А вот совет программистам с опытом не так однозначен. Чтобы ваша программа работала не только на Windows, но и на других операционных системах, следует выбрать GL. Далее следует решить, какие эффекты вам необходимы: можете ли вы обойтись стандартной функциональностью GL, или вам непременно нужно использовать более «продвинутые» эффекты. И, наконец, на сцену выходят личные предпочтения: одним придется по вкусу объектная структура DirectX, другим же она покажется слишком громоздкой. И, конечно, не стоит забывать старый анекдот: «Какой дистрибутив Linux ставить? Тот, который стоит у ближайшего гуру».