Jako, że jest to mój pierwszy post, mówię grzecznie "Dzień dobry" :-)
Korzystając z chwili czasu i strony http://www.chadvernon.com/blog/ postanowiłem sobie odświeżyć wiadomości o Direct3D. Z tutorialami szło mi całkiem nieźle, ale obecnie pracuję nad oświetleniem terenu i troszkę mi nie wychodzi. Jeśli teren pokrywam jedną teksturą i używam standardowego oświetlenia (np. punktowego), wszystko działa OK. Kod renderujący:
Kod:
pDevice->SetTexture( 0, m_pTextureBase );
m_vb.Render( pDevice, m_numIndices - 2, D3DPT_TRIANGLESTRIP );
Wierzchołki generowane z opcjami: D3DFVF_XYZ | D3DFVF_NORMAL | D3DFVF_TEX1, oczywiście wszystkie dane prawidłowe i - jak widać na screenie - działa przyzwoicie (bez oświetlenia ambient):
Gdy chcę dodać drugą teksturkę (dokładniejszą), kod wygląda tak:
Kod:
pDevice->SetTexture( 0, m_pTextureBase );
if ( m_pTextureDetail )
{
pDevice->SetTexture( 1, m_pTextureDetail );
pDevice->SetTextureStageState( 0, D3DTSS_COLORARG1, D3DTA_TEXTURE );
pDevice->SetTextureStageState( 0, D3DTSS_COLOROP, D3DTOP_SELECTARG1 );
pDevice->SetTextureStageState( 1, D3DTSS_COLORARG1, D3DTA_CURRENT );
pDevice->SetTextureStageState( 1, D3DTSS_COLORARG2, D3DTA_TEXTURE );
pDevice->SetTextureStageState( 1, D3DTSS_COLOROP, D3DTOP_ADDSIGNED );
}
m_vb.Render( pDevice, m_numIndices - 2, D3DPT_TRIANGLESTRIP );
Tekstura jest nałożona poprawnie, teren wygląda lepiej, ale oświetlenie nie działa:
http://images43.fotosik.pl/238/934edb5c5960c9b2.jpg
Wierzchołki z tworzone z opcjami: D3DFVF_XYZ | D3DFVF_NORMAL | D3DFVF_TEX2, wszystkie poprawne.
Czy w przypadku multiteksturingu coś powienenem zmieniać ze światłem?
Jeśli opis problemu jest mało szczegółowy, to przepraszam, ale dopiero wracam do formy :-)
Pozdrawiam i dziękuję z góry za odpowiedzi...
Warsztat