Создание текстуры

Работа с 2D и 3D графикой, видео, звуком.

Модератор: Mikle

GLEB
Бывалый
Бывалый
 
Сообщения: 246
Зарегистрирован: 24.05.2005 (Вт) 12:16

Создание текстуры

Сообщение GLEB » 22.01.2006 (Вс) 11:32

Как создать текстуру и заполнить все ее пиксели или тексели (не знаю как правильно), ну короче все точки на ней определенным цветом.

Создал текстуру размером 8 х 8:

Код: Выделить всё
Set Texture3 = d3dx.CreateTexture(d3ddevice, 8, 8, 1, 0, -1, D3DPOOL_MANAGED)


Она черная, как сделать, чтоб, например, красная была?


И еще один вопрос, можно ли сохранить текстуру в файл с учетом ее освещения.
Ну допустим есть примитив с наложенной на нем текстурой и частично освещенный.
Можно сохранить то что получилось в файл. Или то что я сейчас сказал - это полный бред?

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Сообщение Mikle » 22.01.2006 (Вс) 12:15

GLEB
Посмотри мой последний ландшафт, там есть ф-ция FilterMisps - работает с данными текстуры.
Чтобы "сохранить текстуру в файл с учетом ее освещения.", нужно рендерить в текстуру и результат сохранять, или сохранять бэкбуфер.

GLEB
Бывалый
Бывалый
 
Сообщения: 246
Зарегистрирован: 24.05.2005 (Вт) 12:16

Сообщение GLEB » 22.01.2006 (Вс) 14:50

Mikle
Смотрел твой пример
http://bbs.vbstreets.ru/viewtopic.php?t=20872&start=30
LS.RAR
Только он не работает у меня.
Ошибка на строке:
Set Tex = d3dx.CreateTextureFromFileEx(d3dDevice, fName, mW, mH, 1&, D3DUSAGE_DYNAMIC, D3DFMT_X8R8G8B8, D3DPOOL_DEFAULT, D3DX_FILTER_NONE, D3DX_FILTER_NONE, 0&, ByVal 0, ByVal 0)
А если точнее - D3DUSAGE_DYNAMIC. Ставлю - 0, запускается, но выполняет недопустимую операцию в модуле D3D8.DLL.

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Сообщение Mikle » 22.01.2006 (Вс) 17:38

GLEB
Что за видюха?

GLEB
Бывалый
Бывалый
 
Сообщения: 246
Зарегистрирован: 24.05.2005 (Вт) 12:16

Сообщение GLEB » 22.01.2006 (Вс) 17:39

NVIDIA RIVA TNT2 M64 :lol: :lol: :lol: :lol: :lol: :lol: :lol: :lol: :lol: :lol: :lol: :lol: :lol: :lol: :lol: :lol:

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Сообщение Mikle » 22.01.2006 (Вс) 17:51

GLEB
Попробуй использовать режимы D3DFMT_R5G6B5 для видеорежима и для всех текстур. На TNT2 может помочь. По крайней мере в этом режиме я на TNT2 добивался рендер в текстуру, а на D3DFMT_X8R8G8B8 не работало.

GLEB
Бывалый
Бывалый
 
Сообщения: 246
Зарегистрирован: 24.05.2005 (Вт) 12:16

Сообщение GLEB » 22.01.2006 (Вс) 18:08

Попробую.

GLEB
Бывалый
Бывалый
 
Сообщения: 246
Зарегистрирован: 24.05.2005 (Вт) 12:16

Сообщение GLEB » 23.01.2006 (Пн) 16:30

Нет, Mikle, не работает. А кстати что значит D3DUSAGE_DYNAMIC?

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Сообщение Mikle » 23.01.2006 (Пн) 19:02

GLEB
что значит D3DUSAGE_DYNAMIC?

Если честно, я подбирал этот параметр не читая SDK, сейчас глянул, а он, вроде бы, только для индексных и вертексных буферов.

Если на TNT не удается получить доступ к памяти текстуры (найду TNT-шку, попробую), то можно загонять данные в текстуру с помощью D3DX8.CreateTextureFromFileInMemory. Создавать в памяти образ TGA файла (самый простой формат) и загружать текстуру из этого образа.

GLEB
Бывалый
Бывалый
 
Сообщения: 246
Зарегистрирован: 24.05.2005 (Вт) 12:16

Сообщение GLEB » 17.02.2006 (Пт) 9:04

А почему нормально создаются только текстуры 32х32, 64х64, 128х128 ...
А если размер 128 х 96, то она на половину черная?

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Сообщение Mikle » 17.02.2006 (Пт) 10:50

GLEB
А в SDK написано, что размеры текстуры должны быть степенями двойки. Иное прокатывает только если текстура с одним мип-уровнем, и то не на всем железе. 128*64 должно прокатить.

GLEB
Бывалый
Бывалый
 
Сообщения: 246
Зарегистрирован: 24.05.2005 (Вт) 12:16

Сообщение GLEB » 17.02.2006 (Пт) 15:46

и то не на всем железе

Mikle

А как можно нормально создать текстуру, имея байтовый массив ее пикселей и сохранить в файл????

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Сообщение Mikle » 17.02.2006 (Пт) 18:45

Создай в памяти заголовок файла в любом несжатом формате, типа BMP или TGA, дальше можно сохранять в файл, можно загружать с помощью CreateTextureFromFileInMemory.

GLEB
Бывалый
Бывалый
 
Сообщения: 246
Зарегистрирован: 24.05.2005 (Вт) 12:16

Сообщение GLEB » 17.02.2006 (Пт) 19:04

Пробовал, только что-то не получается.
В BMP заголовке есть параметр - размер файла, и чего он складывается?

DirectXManiac
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1543
Зарегистрирован: 03.11.2005 (Чт) 13:32
Откуда: из DirectX SDK

Сообщение DirectXManiac » 19.02.2006 (Вс) 11:37

ПЛИЗЗ!Как получить из цвета Long значения R,G,B ?
#define ROFL 0xDDDD

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 19.02.2006 (Вс) 13:27

Код: Выделить всё
b = c \ 65536
g = (c - b * 65536) \ 256
r = c - b * 65536 - g * 256

DirectXManiac
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1543
Зарегистрирован: 03.11.2005 (Чт) 13:32
Откуда: из DirectX SDK

Сообщение DirectXManiac » 19.02.2006 (Вс) 16:12

СПАСИБО!
#define ROFL 0xDDDD

DirectXManiac
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1543
Зарегистрирован: 03.11.2005 (Чт) 13:32
Откуда: из DirectX SDK

Сообщение DirectXManiac » 05.12.2006 (Вт) 16:11

Люди, а как получить цвет точки из текстуры?
#define ROFL 0xDDDD

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Сообщение Mikle » 05.12.2006 (Вт) 17:32

DirectXManiac
Читай текстуру в массив, например, как читается в примере с Volume Texture. Бери цвет из массива.

DirectXManiac
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1543
Зарегистрирован: 03.11.2005 (Чт) 13:32
Откуда: из DirectX SDK

Сообщение DirectXManiac » 05.12.2006 (Вт) 18:36

Mikle
Спасибо :)
#define ROFL 0xDDDD


Вернуться в Мультимедиа

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 61

    TopList