|
|
Ответов: 0
|
25-02-12 07:01
|
|
|
|
Ответов: 0
|
16-01-12 20:13
|
|
|
|
Ответов: 1
|
09-01-12 11:23
|
|
   Web - программирование
|
|
|
   Программирование под ОС
|
|
|
   Web - технологии
|
|
|
   Базы Данных
|
|
|
|
Возможно вас заинтересует
|
|
Использование текстур
Привет всеm. После достаточно долгого перерыва я
продолжаю серию уроков посвященных аспектов программирования DirectX8. Данный
урок будет посвящен использованию в Direct3D8 текстур, пока только самое начало,
как загрузить и как потом отрисовать полигон с наложенной на него текстурой. В
последствии будут и более продвинутые уроки по работе с текстурами.
Я думаю, что можно уже начать. Думаю, все знают,
для чего необходимы текстуры, так что перейдем непосредственно к той части,
которая даст нам необходимые сведения для работы с текстурами в Direct3D8.
Первое что нам необходимо сделать это задать
необходимый формат вершин, так как текстуры используются при отрисовке
полигонов, которые строятся по вершинам. Теперь, кроме того, что мы задаем
положение вершины в пространстве и вектор нормали, нам необходимо задавать еще
координаты текстуры для данной вершины. Таким образом, мы можем произвольно
располагать текстуру на полигоне, масштабировать ее, вращать, и вообще
располагать ее как нам угодно. В нижеследующих строках представлен нужный нам
формат:
как вы видите, у нас появились координаты текстуры
( tu и tv ) и в описании мы указываем, что у нас имеются
координаты текстуры ( D3DFVF_TEX1 ), причем для первой текстуры (о более
интересном их использовании будет рассказано в последующих уроках, пока же
ограничимся одной текстурой).
Далее для дальнейшего использования мы будем
использовать интерфейс для работы с текстурами Direct3D8 (точнее нам необходима
переменная, которая будет представлять текстуру):
LPDIRECT3DTEXTURE8 textura001;
Следующим шагом нам необходимо задать все
параметры для вершин, такие как положение, нормаль, и самое главное, координаты
текстуры (создадим простой полигон):
обратите внимание на последние пару вводимых
данных - это и есть координаты текстур. Изменяя их можно добиться весьма
интересных результатов (например, растяжение какой-то конкретной части текстуры,
движение текстуры - например, облаков или воды, использование одной и той же
текстуры для разных полигонов, причем так, что эти полигоны будут окрашены
по-разному благодаря различаю координат текстуры). В данном моменте необходимо
помнить, что несмотря на размер текстуры в пикселях, любые текстуры будут
отображаться также, так как координаты текстуры задаются в относительных
величинах от 0 до 1 (0 - соответствует 0 пикселю, 1 - последней точке на
текстуре), но никто не запрещает вам задавать там величину больше 1 - тогда
получится, что вы накладываете текстуры и тайлите их (по английски - tiling),
что я собственно и сделал, использовав координаты 0.0f и 2.0f.
После того как мы задали координаты текстур (можно
в принципе и до, это не важно), нам нужно загрузить текстуру из файла с
картинкой. Делается это следующим образом:
данный фрагмент использует функцию
D3DXCreateTextureFromFile() для загрузки изображений из файлов, в
качестве файлов можно задавать почти любой популярный формат (бмп, жпег, tga,
tiff и т.д.). Важно только помнить - что лучше всего использовать квадратные
текстуры со стороной кратной степени двойки (2, 4, 8, 16, 32, 64, 128, 256, 512,
1024 и т.д.).
После загрузки мы уже можем использовать данную
текстуру для рендеринга нашей сцены. Посмотрим, как это делается:
--- сначала устанавливаем текстуру на 0 текстурный
уровень, всего их может быть 8, для чего они нужны будет рассмотрено в
последующих уроках. --- устанавливает текстурные состояния и текстурные
операции, более подробно об этом в следующих уроках --- и затем рендерим
вот и все. Теперь вы должны получить картинку,
похожую на вот эту:
Да, чуть не забыл. После того как вы использовали
текстур, информацию о ней, и занимаемую ею память, нужно уничтожить освободить
(т.е. нужно уничтожить текстуру). Делается это так:
_RELEASE_ (textura001);
Вот теперь действительно все... :)
Это - библиотека диспетчера Microsoft DirectX, чтобы оптимизировать графы и звуковые представления для Windows... подробнее
|
Кол. просмотров: общее - 3907 сегодня - 2
|
|
Особенности программирования DirectX графики для видео карт nVidia (по материалам nVidia)... подробнее
|
Кол. просмотров: общее - 4357 сегодня - 2
|
|
|
Кол. просмотров: общее - 5073 сегодня - 2
|
|
Темой этого урока я решил сделать написание т. н. движка. Полагая, что всегда существует определённый контингент людей, только начавших изучать мультимедийные и игровые технологии, и плавающие в загадочных понятиях, объясню, что такое движок и на каком бензине он работает... подробнее
|
Кол. просмотров: общее - 4587 сегодня - 2
|
|
По прошествии некоторого времени после празднования Нового Года и всего, что с ним связано, предлагаю вашему вниманию новый урок. Посвящен он будет извлечению информации о возможностях вашей видео карты... подробнее
|
Кол. просмотров: общее - 4258 сегодня - 0
|
|
|
|