Архивы: по дате | по разделам | по авторам

Результат налицо

АрхивКомментарий дня
автор : Евгений Золотов   17.06.2002

Новый язык программирования, созданный NVIDIA, может облегчить задачу написания приложений, работающих с качественной, современной графикой.

Эволюция компьютерной техники неутомима - но, совершенствуя аппаратное обеспечение, она делает всё сложней и сложней работу с ним, одновременно повышая и ожидания пользователей. Сегодняшние графические карты строятся на процессорах, соперничающих по вычислительной мощи с основным процессором машины, и программировать их работу ничуть не проще, а учитывая много более быструю смену поколений графических чипов и их многочисленность - ещё и сложней, чем главный процессор компьютера. Между тем пользователи ждут всё более быстрой и красивой графики (впрочем, чего тут объяснять?..). Времена Wolfenstein'a давно прошли и сегодня сложность графических движков несоизмеримо выше - требуя, как и прежде, умения писать на самом низком уровне, знания низкоуровневых наборов команд и тончайших особенностей современных графических процессоров. В таких условиях, преимущества - у коллективов уже сработавшихся и имеющих некий багаж за плечами, хотя и они регулярно отказываются от старых наработок, создавая нечто принципиально новое (вспомните хотя бы историю Doom III). Устранить проблему, облегчив задачу разработчика, решила NVIDIA - создавшая язык программирования Cg.

Говоря строго, Cg - высокоуровневый графический язык программирования. По выражению президента компании, Cg делает для GPU то же, что C и C++ для CPU. Отсюда и название, образованное из двух частей: "C" - от старого языка, из которого взят общий синтаксис и идеология, и "g" - от графики. Предназначение Cg - облегчение программирования современных графических карт. Новый язык позволяет отказаться от написания низкоуровневых процедур на ассемблере графических процессоров, и использовать для различных видеокарт один и тот же язык сравнительно высокого уровня. Попросту говоря, заготовив графические модели, разработчик сможет быстрее "оживить" их, имплантировав в свою программу с помощью обработчиков на Cg. Текстурирование, обсчёт отдельных деталей сцены, совмещение объёмных моделей - всё это (и многие другие "простые" процедуры) выполняются непосредственно видеокартами, для которых пишутся примитивные программы-обработчики - именно их и можно писать с помощью Cg. Впрочем, есть у языка и специализация - вертексные и пиксельные шейдеры.

Cg создавался в тесном контакте с Microsoft, поэтому, помимо совместимости с OpenGL 1.4, он понимает DirectX 8 и 9. Компилятор Cg поддерживает все GPU, поддерживающие эти стандарты - так что написанная на новом языке программа автоматически обретает универсальность. Плюс ко всему, Cg понимает несколько платформ (Windows, Linux, MacOS, Xbox). Такая всеядность при сохранении быстродействия - одно из главных преимуществ нового языка. В числе прочих - открытость части кода самого инструментария разработчика на Cg (в который, помимо компилятора, входит "браузер" для работы с графикой, а также набор примеров и дополнительных компонент), что позволяет пользователям добавлять к языку собственные новые компоненты. Но самое важное - поддержка Cg более чем сотней компаний, занимающихся, в основном, производством игр (Sony, Blizzard, Epic и др).

NVIDIA представляет Cg стандартом, обладающим двусторонней совместимостью - но при этом оставляет за собой право на добавление в него некоторых, пока зарезервированных команд. К этому успели придраться критики, считающие, что популяризация Cg сыграет на руку главным образом самой NVIDIA и Microsoft: язык уже сейчас обладает рядом особенностей, ориентирующих его на графические чипы NVIDIA и DirectX, и в будущем, за счёт использования новых команд, эта специализация может только усилиться. Но есть ли альтернатива?

Обсудите материал в форуме

© ООО "Компьютерра-Онлайн", 1997-2024
При цитировании и использовании любых материалов ссылка на "Компьютерру" обязательна.