2D&Directx8

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

Модератор: Mikle

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

Re: 2D&Directx8

Сообщение Mikle » 03.11.2010 (Ср) 19:14

Мне нужно изображение которое рендрится на буфере засунуть в картинку(текстуру).

А мой пример не то делает???

outrolab
Новичок
Новичок
Аватара пользователя
 
Сообщения: 41
Зарегистрирован: 27.05.2009 (Ср) 22:42

Re: 2D&Directx8

Сообщение outrolab » 03.11.2010 (Ср) 22:28

Нет тут подругому, мне надо записать буфер(2d изображение) в текстуру
Кот очень классный

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

Re: 2D&Directx8

Сообщение DirectXManiac » 03.11.2010 (Ср) 23:41

И в чем проблема подменить RenderTarget и отрендерить в него 2д графику??
P.S.
Я вот не понимаю одного. Если тебе говорят что ты выражаешься непонятно, а ты продолжаешь выражаться точно также при этом переставляю слова местами и заменяя синонимами, что ты хочешь получить?
#define ROFL 0xDDDD

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

Re: 2D&Directx8

Сообщение Mikle » 04.11.2010 (Чт) 9:53

А у меня в текстуру что пишется? Если ты имеешь ввиду не буфер, а бэкбуфер, то это тоже можно с помощью Lock, но это неправильно. Это длинно и тормозно. В моём примере текстура (точнее её нулевой сурфейс) подставляется ВМЕСТО бэкбуфера, и рендер идёт прямо в неё. И получается именно 2D, потому, что текстура 2D, да и не умеет DirectX пока что рендерить не в 2D.

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

Re: 2D&Directx8

Сообщение DirectXManiac » 04.11.2010 (Чт) 10:34

Mikle
да и не умеет DirectX пока что рендерить не в 2D.

+1)
Все это 2д, а эффекты - шейдеры и FFP преобразования :D
#define ROFL 0xDDDD

outrolab
Новичок
Новичок
Аватара пользователя
 
Сообщения: 41
Зарегистрирован: 27.05.2009 (Ср) 22:42

Re: 2D&Directx8

Сообщение outrolab » 04.11.2010 (Чт) 18:21

Чтож поделать буду разбираться...
Кот очень классный

outrolab
Новичок
Новичок
Аватара пользователя
 
Сообщения: 41
Зарегистрирован: 27.05.2009 (Ср) 22:42

Re: 2D&Directx8

Сообщение outrolab » 17.12.2010 (Пт) 3:44

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

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

Re: 2D&Directx8

Сообщение DirectXManiac » 17.12.2010 (Пт) 10:36

Код в студию! :)
#define ROFL 0xDDDD

outrolab
Новичок
Новичок
Аватара пользователя
 
Сообщения: 41
Зарегистрирован: 27.05.2009 (Ср) 22:42

Re: 2D&Directx8

Сообщение outrolab » 17.12.2010 (Пт) 22:06

Вот кидаю код.
У вас нет доступа для просмотра вложений в этом сообщении.
Кот очень классный

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

Re: 2D&Directx8

Сообщение DirectXManiac » 18.12.2010 (Сб) 1:07

И где здесь у тебя рендер текстуры в текстуру? Не вижу ничего похожего на рендер в текстуру. Конечно у тебя не получается.
1) Нужно рендерить в сурфейс
Код: Выделить всё
'Создаешь сурфейс
Dim surf As Direct3DSurface8
Set surf = texture1.GetSurfaceLevel(0)

2) Рендеришь в него
Код: Выделить всё
Dim oldTarget As Direct3DSurface8
Set oldTarget = D3DDevice.GetRenderTarget() 'Вроде того
D3DDevice.SetRenderTarget(0,surf) 'Твой сурфейс
...
'Клир, бениг сцене и все такое, кроме Present

3) Возвращаешь исходный таргет
Код: Выделить всё
D3DDevice.SetRenderTarget(0,oldTarget)

смотри пример Mikle и вопросов не будет. Ты ничего из этого не сделал и хочешь получить рендер в текстуру..
#define ROFL 0xDDDD

outrolab
Новичок
Новичок
Аватара пользователя
 
Сообщения: 41
Зарегистрирован: 27.05.2009 (Ср) 22:42

Re: 2D&Directx8

Сообщение outrolab » 21.12.2010 (Вт) 17:51

С рендером в текстуру разобрался. Извените пожалуйста я не изучил досконально проект майкла.
Кот очень классный

outrolab
Новичок
Новичок
Аватара пользователя
 
Сообщения: 41
Зарегистрирован: 27.05.2009 (Ср) 22:42

Re: 2D&Directx8

Сообщение outrolab » 21.12.2010 (Вт) 18:08

Теперь у меня новая проблема:"Можно ли нарисовать текстуру без какого-либо определенного цвета?"(чтобы рисовалось все кроме этого цвета)
Кот очень классный

FireFenix
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1640
Зарегистрирован: 25.05.2007 (Пт) 10:24
Откуда: Mugen no Sora

Re: 2D&Directx8

Сообщение FireFenix » 21.12.2010 (Вт) 19:11

outrolab писал(а):Теперь у меня новая проблема:"Можно ли нарисовать текстуру без какого-либо определенного цвета?"(чтобы рисовалось все кроме этого цвета)

Да
Птицей Гермеса меня называют, свои крылья пожирая... сам себя я укрощаю
私はヘルメスの鳥 私は自らの羽根を喰らい 飼い慣らされる

outrolab
Новичок
Новичок
Аватара пользователя
 
Сообщения: 41
Зарегистрирован: 27.05.2009 (Ср) 22:42

Re: 2D&Directx8

Сообщение outrolab » 21.12.2010 (Вт) 19:52

Как?
Кот очень классный

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

Re: 2D&Directx8

Сообщение DirectXManiac » 22.12.2010 (Ср) 0:38

Создать текстуру с помощью D3DX.CreateTextureFromFileEx и задать этот цвет в параметр ColorKey.
При рисовании включить прозрачность:
Код: Выделить всё
D3DDevice.SetRenderState D3DRS_ALPHABLENDENABLE, True
D3DDevice.SetRenderState D3DRS_SRCBLEND,D3DBLEND_SRCALPHA
D3DDevice.SetRenderState D3DRS_DESTBLEND,D3DBLEND_INVSRCALPHA

После прорисовки выключить ALPHABLENDENABLE
#define ROFL 0xDDDD

outrolab
Новичок
Новичок
Аватара пользователя
 
Сообщения: 41
Зарегистрирован: 27.05.2009 (Ср) 22:42

Re: 2D&Directx8

Сообщение outrolab » 22.12.2010 (Ср) 2:52

А если текстура создается не из файла а рендером в текстуру?
Кот очень классный

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

Re: 2D&Directx8

Сообщение Mikle » 22.12.2010 (Ср) 10:22

DirectXManiac
Если уж использован ColorKey, то вместо AlphaBlend можно использовать AlphaTest - и быстрее, и сортировка не нужна.
outrolab писал(а):А если текстура создается не из файла а рендером в текстуру?

Так ColorKey не задействуешь, но при рендере в текстуру можно рендерить и в её альфаканал и потом уже использовать текстуру с готовой альфой.
Тут есть пример рендера в альфаканал текстуры:
http://www.uraldev.ru/articles/id/37

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

Re: 2D&Directx8

Сообщение DirectXManiac » 22.12.2010 (Ср) 23:01

Mikle
Да, но если FVF содержит цвет можно с помощью альфа составляющей цвета вершины играться со степенью прозрачности, помимо ColorKey, насколько я знаком с AlphaTest он просто отсекает прозрачные пиксели.
P.S. Смотрел пример с ЛОДами? Я жду отзывов...
#define ROFL 0xDDDD

outrolab
Новичок
Новичок
Аватара пользователя
 
Сообщения: 41
Зарегистрирован: 27.05.2009 (Ср) 22:42

Re: 2D&Directx8

Сообщение outrolab » 23.12.2010 (Чт) 3:28

AlphaTest - это какраз то что мне надо. Только как им пользоваться?
Кот очень классный

BV
Thinker
Thinker
Аватара пользователя
 
Сообщения: 3987
Зарегистрирован: 12.09.2004 (Вс) 0:55
Откуда: Молдавия, г. Кишинёв

Re: 2D&Directx8

Сообщение BV » 23.12.2010 (Чт) 11:20

FireFenix писал(а):Довести старенький PE Explorer до ума

Тот самый, что-ли?

DirectXManiac писал(а):P.S. Смотрел пример с ЛОДами? Я жду отзывов...

Собери пример статически, он у тебя требует рантайма VC10

outrolab писал(а):AlphaTest - это какраз то что мне надо. Только как им пользоваться?

В SetRenderState укажи D3DRS_ALPHATESTENABLE, затем D3DRS_ALPHAFUNC и условие прохождения
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;

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

Re: 2D&Directx8

Сообщение Mikle » 23.12.2010 (Чт) 13:42

BV писал(а):В SetRenderState укажи D3DRS_ALPHATESTENABLE, затем D3DRS_ALPHAFUNC и условие прохождения

И ещё ALPHA_REF нужно выставить.

FireFenix
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1640
Зарегистрирован: 25.05.2007 (Пт) 10:24
Откуда: Mugen no Sora

Re: 2D&Directx8

Сообщение FireFenix » 23.12.2010 (Чт) 14:40

BV писал(а):
FireFenix писал(а):Довести старенький PE Explorer до ума

Тот самый, что-ли?

Типа того...
Только у меня самописный :) И PE Explorer только название, задумывалось, как вытаскивание любой возможной инфы из различных фалов.
Птицей Гермеса меня называют, свои крылья пожирая... сам себя я укрощаю
私はヘルメスの鳥 私は自らの羽根を喰らい 飼い慣らされる

outrolab
Новичок
Новичок
Аватара пользователя
 
Сообщения: 41
Зарегистрирован: 27.05.2009 (Ср) 22:42

Re: 2D&Directx8

Сообщение outrolab » 23.12.2010 (Чт) 15:17

А что писать в Value а то я ставлю черынй цвет RGB(0,0,0) но ничего не происходит картинка рисуется с черным фоном
Кот очень классный

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

Re: 2D&Directx8

Сообщение Mikle » 23.12.2010 (Чт) 15:18

DirectXManiac писал(а):P.S. Смотрел пример с ЛОДами? Я жду отзывов...

Да, я запустил - не пошло, у меня стоит VS2008, рантайм пока не качал.

BV
Thinker
Thinker
Аватара пользователя
 
Сообщения: 3987
Зарегистрирован: 12.09.2004 (Вс) 0:55
Откуда: Молдавия, г. Кишинёв

Re: 2D&Directx8

Сообщение BV » 23.12.2010 (Чт) 15:21

FireFenix писал(а):Типа того...

А я уж было подумал, что ты -- один из соавторов того проекта. Какая досада, что нет :)
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;

outrolab
Новичок
Новичок
Аватара пользователя
 
Сообщения: 41
Зарегистрирован: 27.05.2009 (Ср) 22:42

Re: 2D&Directx8

Сообщение outrolab » 23.12.2010 (Чт) 15:58

Недавно сделал программу для создания анимаций к игре.
Кот очень классный

outrolab
Новичок
Новичок
Аватара пользователя
 
Сообщения: 41
Зарегистрирован: 27.05.2009 (Ср) 22:42

Re: 2D&Directx8

Сообщение outrolab » 23.12.2010 (Чт) 16:26

Инструкция к запуску:
1) Запустить экзешник
2) В окне Form1 нажать кнопку Open (появятся кадры)
3) Снимаем флаг на Visible_Path
4) Ставим флаг на Loop
5) Ставим Add_Speed 7
6) Жмем кнопку Start2
Позже если нужно скину гайд как редактировать анимацию)
У вас нет доступа для просмотра вложений в этом сообщении.
Кот очень классный

outrolab
Новичок
Новичок
Аватара пользователя
 
Сообщения: 41
Зарегистрирован: 27.05.2009 (Ср) 22:42

Re: 2D&Directx8

Сообщение outrolab » 25.12.2010 (Сб) 22:56

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

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

Re: 2D&Directx8

Сообщение Mikle » 26.12.2010 (Вс) 20:15

Ты не делаешь попыток разобраться, думаешь просто накопировать кусков из примера, и готово.
Texture1 нигде в коде не создаётся.

outrolab
Новичок
Новичок
Аватара пользователя
 
Сообщения: 41
Зарегистрирован: 27.05.2009 (Ср) 22:42

Re: 2D&Directx8

Сообщение outrolab » 26.12.2010 (Вс) 20:39

Я вставил кусок кода как написали
Кот очень классный

Пред.След.

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

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

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

    TopList