Что делает видеокарта, а что графическая библиотека, и к чему из этого относятся шейдеры. Допустим создаётся ланшафт; создаётся кубик с текстурой, и крутится; создаётся зеркало за кубиком; создаётся освещение и тень от зеркала и кубика. Как всё это обрабатывается и работает. Если не сложно в виде схемы.
Видеокарта делает то что умеет, а это зависит от конкретной модели. Графическая библиотека умеет всё, но делает то что не умеет видекарта написано об этом действительно много, например кое-что популярно здесь
Шейдер -- это программа, выполняемая процессором видюхи (графическим процессором, GPU или ГП). Ну а схема в случае использования DirectX зависит от версии этого самого DirectX. Для 9-й будет примерно так: 1) Программа, выполняемая центральным процессором, "спускает" с помощью соответствующих вызовов DirectX API набор треугольников, из которых строится трёхмерная сцена, набор текстур, накладываемых на эти треугольники, набор шейдеров ну и всякую дополнительную информацию. 2) DirectX что-то делает самостоятельно, но главным образом передаёт всё это графическому процессору (в каком виде, роли не играет, но зависит от модели ГП); 3) Графический процессор для каждой из вершин треугольников выполняет соответствующий вершинный шейдер. Этот шейдер может, например, изменить координаты вершины в пространстве (и тем самым деформировать объект). Если шейдер не задан, выполняются определённые стандартные действия. 4) Далее накладываются текстуры, рассчитывается освещение и всё такое прочее. На выходе получается двухмерное изображение. 5) Для каждой точки полученного изображения вызывается соответствующий пиксельный шейдер. Он производит окончательный расчёт цвета пикселя, за счёт чего можно создавать множество эффектов. 6) Полученный результат отображается на экране. В DirectX 10 шагов больше. Главное отличие -- появление геометрических шейдеров, которые способны создавать новые вершины, а не просто обрабатывать уже существующие.
А как сделать что-то вроде графической библиотеки? Где найти документацию, примеры? Сильно отличаются NVidia, ATI? Разные или одинаковые команды надо им посылать для выполнения определённый действий?
Zhelezka А если хотите писать своии драйвера ищите исходники. ATI часть документации открыто у intel тоже. А так берем OpenGL и DirectX и делаем то что нужно.
Zhelezka DirectX, как и OpenGL, скрывают от программиста особенности аппаратуры, поэтому теоретически можно писать графические программы, не задумываясь о том, какая видюха стоит у пользователя. Однако здесь есть два "но": 1) Набор возможностей, реализуемых разными графическими процессорами, отличается. Например, если ГП поддерживает только шейдеры 1-й версии, то шейдеры 3-й версии работать, естественно, не смогут. В этом плане ДХ10 имеет преимущество перед ДХ9, поскольку гарантирует, что все определяемые им возможности у совместимой с ним видюхи будут. 2) ГП или драйвера не всегда ведут себя корректно, что может вызывать проблемы. Из недавних глюков, с коими столкнулся лично, могу назвать "Сталкер: Чистое небо" (вообще отвратительная игра в смысле качества, но это уже другой вопрос). На видюхах от Невидии всё работало нормально (насколько оно вообще в этой игре работает нормально), а вот на Радеонах при высоких настройках (при динамическом освещении, если склероз не изменяет) некоторые "сетчатые" объекты, в частности, колючая проволока, вообще не отображались. Ну и представьте, каково искать дыру в заборе, если самого забора не видно С одной стороны, очевидно, что виноваты либо ГП, либо драйвера от АМД, но с другой -- разработчики игры явно не удосужились проверить её работоспособность на разных аппаратных конфигурациях. В общем, "команды" в общем случае посылаются одинаковые, однако надо предварительно убедиться, что необходимые возможности поддерживаются аппаратурой, и не лениться тестировать на разном железе. Документации по Невидиям нет, по Радеоном -- частично открыта. Впрочем, это не очень-то поможет, потому что работать на уровне команд, выполняемых "железом", очень сложно и муторно по понятным причинам. Так что лучше изучать ДиректХ или ОпенГЛ. А это надо для начала определиться, что она должна делать