Войти
ПрограммированиеФорумГрафика

D3DXCreateTextureFromFile и ColorKey

Страницы: 1 2 Следующая »
#0
23:51, 10 дек. 2011

Здравствуйте у меня задача на 1 тексутру наложить вторую исключив допустим розовый цвет 255 0 255 делаю! не получаеться ( помогите!

D3DXCreateTextureFromFile(g_pd3dDevice,L"111.jpg", &Texture001);
D3DXCreateTextureFromFileEx(g_pd3dDevice,L"Pointed.jpg",0,0,0,0,D3DFMT_UNKNOWN,D3DPOOL_MANAGED,D3DX_DEFAULT,D3DX_DEFAULT,D3DCOLOR_XRGB(255,0 ,255), NULL, NULL, &TexturePointed);




Рэндер


g_pd3dDevice->SetStreamSource( 0, g_pVB, 0, sizeof( CUSTOMVERTEX ) );
g_pd3dDevice->SetFVF( D3DFVF_CUSTOMVERTEX );
g_pd3dDevice->SetIndices(g_pIB);


     
g_pd3dDevice->SetRenderState(D3DRS_SRCBLEND,D3DBLEND_SRCALPHA);
g_pd3dDevice->SetRenderState(D3DRS_DESTBLEND,D3DBLEND_INVSRCALPHA);
g_pd3dDevice->SetRenderState(D3DRS_ALPHABLENDENABLE,TRUE);

g_pd3dDevice->SetTexture(0,Texture001);
g_pd3dDevice->SetTextureStageState(0,D3DTSS_COLORARG1,D3DTA_TEXTURE);
g_pd3dDevice->SetTextureStageState(0,D3DTSS_COLOROP,D3DTOP_MODULATE);
    
g_pd3dDevice->SetTexture(1,TexturePointed);
g_pd3dDevice->SetTextureStageState(1,D3DTSS_COLORARG1,D3DTA_TEXTURE);
g_pd3dDevice->SetTextureStageState(1,D3DTSS_COLOROP,D3DTOP_MODULATE);


#1
1:18, 11 дек. 2011

А что именно не получается?

#2
1:20, 11 дек. 2011

Текстура просто ложиться  сверху на неё и смешиваеться с ней синяя тексутра стноавица красной так как на неё ложиться розовая основная часть которую нужно сделать прочным

#3
1:23, 11 дек. 2011

Попробовал так же легла просто поверху

#4
1:25, 11 дек. 2011

Верней вру) она просто моей первой текстуры меняет контраст делает её красноватой всю

#5
1:43, 11 дек. 2011

Попробуй вместо D3DTOP_MODULATE для второй текстуры поставить D3DTOP_SELECTARG1

#6
1:54, 11 дек. 2011

пишит что нельзя

#7
15:59, 11 дек. 2011

Nikita.S.
Добавь:

g_pd3dDevice->SetTextureStageState(1,D3DTSS_ALPHAARG1,D3DTA_TEXTURE);
g_pd3dDevice->SetTextureStageState(1,D3DTSS_ALPHAOP,D3DTOP_SELECTARG1);
Nikita.S.
> пишит что нельзя
Не может быть такого.
Но SELECTARG1 нужно не для второй, а для первой текстуры, если уж на то пошло.
#8
16:43, 11 дек. 2011

первая текстура загружена просто без параметров ( ка туда добавить то?
Добавил

 g_pd3dDevice->SetRenderState(D3DRS_SRCBLEND,D3DBLEND_SRCALPHA);
    g_pd3dDevice->SetRenderState(D3DRS_DESTBLEND,D3DBLEND_INVSRCALPHA);
    g_pd3dDevice->SetRenderState(D3DRS_ALPHABLENDENABLE,TRUE);

    g_pd3dDevice->SetTexture(0,Texture001);
    g_pd3dDevice->SetTextureStageState(0,D3DTSS_COLORARG1,D3DTA_TEXTURE);
    g_pd3dDevice->SetTextureStageState(0,D3DTSS_COLOROP,D3DTOP_MODULATE);
    
     g_pd3dDevice->SetTexture(1,TexturePointed);
       g_pd3dDevice->SetTextureStageState(1,D3DTSS_COLORARG1,D3DTA_TEXTURE);
        g_pd3dDevice->SetTextureStageState(1,D3DTSS_COLOROP,D3DTOP_MODULATE);
       g_pd3dDevice->SetTextureStageState(1,D3DTSS_ALPHAARG1,D3DTA_TEXTURE);
            g_pd3dDevice->SetTextureStageState(1,D3DTSS_ALPHAOP,D3DTOP_SELECTARG1);

тож самое

#9
16:43, 11 дек. 2011

Может у когото есть фрагмент с наложением второй текстуры на первую с цветовым ключем? ( РАБОЧИЙ ) пришлите плс

#10
19:46, 11 дек. 2011

Nikita.S.
> фрагмент с наложением второй текстуры на первую с цветовым ключем
Я думал, что нужна общая прозрачность модели, задаваемая через вторую текстуру.
Если не так, тогда проще - убери все альфапараметры, даже ALPHABLENDENABLE, во второй текстуре:

g_pd3dDevice->SetTextureStageState(1,D3DTSS_COLORARG1,D3DTA_CURRENT);
g_pd3dDevice->SetTextureStageState(1,D3DTSS_COLORARG2,D3DTA_TEXTURE);
g_pd3dDevice->SetTextureStageState(1,D3DTSS_COLOROP,D3DTOP_BLENDTEXTUREALPHA);
#11
20:57, 11 дек. 2011

ВОт скриншот того что мне нужно))

Безымянный

#12
21:07, 11 дек. 2011

Nikita.S.
А ты в курсе, что при применении ColorKey ни в коем случае нельзя использовать jpg?

#13
21:13, 11 дек. 2011

Да я уже давно поменял всё на бмп ( не работает (

#14
21:30, 11 дек. 2011

Только что проверил так, как я написал в п.10 - работает, только альфа инвертирована, чтобы была нормальная, нужно поменять строчки местами:

g_pd3dDevice->SetTextureStageState(1,D3DTSS_COLORARG1,D3DTA_TEXTURE);
g_pd3dDevice->SetTextureStageState(1,D3DTSS_COLORARG2,D3DTA_CURRENT);
g_pd3dDevice->SetTextureStageState(1,D3DTSS_COLOROP,D3DTOP_BLENDTEXTUREALPHA);
Ещё подозреваю, что у тебя нет координат для первой стадии текстурирования, добавь строчку:
g_pd3dDevice->SetTextureStageState(1,D3DTSS_TEXCOORDINDEX, 0);
Nikita.S.
> Да я уже давно поменял всё на бмп
А bmp получил из тех jpg? Я посмотрел в фотошопе - фиолетовый фон имеет в основном значение 0xff00fe, а не 0xff00ff (D3DCOLOR_XRGB(255,0 ,255)).
И вместо D3DFMT_UNKNOWN лучше явно указать D3DFMT_A8R8G8B8.

Страницы: 1 2 Следующая »
ПрограммированиеФорумГрафика

Тема в архиве.