{{notification.text}}

MirGames

freewebtime
12.01.09 14:04
0
Вот блин, уже готов апстену биться... Есть полигон - прямоугольник, на него натянута текстура - это ПНГ файл. Все работает, двухдневный секс с Delphi увенчался оргазмом. Текстура отображается хорошо, у нее нет проблем с прозрачностью...
Но можно ли всю фигуру (прямоугольник) сделать полупрозрачным? То есть, кроме альфа-канала текстуры, мне нужно еще и альфа-смешивание вершин. Как это увязать? Подскажите, плз, кто знает! Я помню - там как-то до горя просто... где-то какой-то флаг, если не ошибаюсь... :unsure:
#1
Студент
12.01.09 14:24
0
Хм... Вообще не программировал Direct3D уже достаточно давно, но вроде бы как в твоём случае, надо еще цвет вершин установить в полупрозрачный цвет. Т.е. альфу поменять. Поставь все цвета на половинные и посмотри, что будет. Если у тебя текстура отображается в некоторых местах полупрозрачной и проблем с альфой нету - значит и проблем с интерполяцией альфы по полигону быть не должно.
#2
freewebtime
13.01.09 06:08
0
Нет, в том-то вся и беда... Не работает, хоть ты тресни...Если и отрисовывается полигон с прозрачностью, то на прозрачность текстуры это не влияет. Ну, вроде, как каждый сам по себе... (((
#3
аксакал
13.01.09 06:25
0
В OpenGL есть такой параметр текстуры - GL_MODULATE, возможно в DX следует использовать что-то типа
SetTextureStageState(1, D3DTSS_COLOROP, D3DTOP_MODULATE)
#4
Dan
The One
13.01.09 10:33
0
SetTextureStageState(0, D3DTSS_COLOROP, D3DTOP_MODULATE);
SetTextureStageState(0, D3DTSS_COLORARG1, D3DTA_DIFFUSE);
SetTextureStageState(0, D3DTSS_COLORARG2, D3DTA_TEXTURE);
SetRenderState(D3DRS_ALPHABLENDENABLE, 1);
Отредактировано: 13.01.09 10:34
#5
13.01.09 20:13
0
XProger моск))))ыы)))
ЗЫ не удержался))))
freewebtime а кто тебе мешает мучить пиксельный шейдер(две текстуры) и ноги в руки))
#6
18.01.09 20:55
0
Dan
помойму ты чуток ошибся, ему альфа нужна, а ты указываешь на смешивание цветов вертекса и текстуры. Скорее ближе ему будет это
pD3DD->SetTextureStageState(0, D3DTSS_ALPHAARG1, D3DTA_TEXTURE);
pD3DD->SetTextureStageState(0, D3DTSS_ALPHAARG2, D3DTA_DIFFUSE);
pD3DD->SetTextureStageState(0, D3DTSS_ALPHAOP, D3DTOP_MODULATE);

Можешь ещё это добавить и альфу всего объекта можно будет менять просто поменяв матерьял
pD3DD->SetRenderState(D3DRS_DIFFUSEMATERIALSOURCE, D3DMCS_MATERIAL);
(ну на сколько я помню)
Отредактировано: 18.01.09 20:56
#7
Dan
The One
19.01.09 19:25
0
Smouking
Ты не правильно понимаешь, по умолчанию в д3д смешивание альфы выполняется по алгоритму смешивания цвета. ALPHAARG1, ALPHAARG2, ALPHAOP не будут иметь никакого эффекта если не включить SEPARATEALPHABLENDENABLE.
#{{post.Index}}
{{post.Author.Login}}
{{post.CreatedDate | date:'dd.MM.yy HH:mm'}}
{{post.VotesRating}}
Отредактировано: {{post.UpdatedDate | date:'dd.MM.yy HH:mm'}}