Heyho,
ich bin dabei an meinem Terrain zu arbeiten. Dazu erstelle ich eine Grundfläche aus Quadraten, die jeweils aus 5 Dreiecken bestehen.
Weiterhin erzeuge ich EINE Colormap, die sozusagen als Basis benutzt wird und mit der das Terrain ganz einfach inkl. Beleuchtung gezeichnet werden soll.
Zu meiner Zeichenmethoden gehört eigentlich auch das schichtweise Zeichnen der einzelnen Terrain-Texturen (inkl. Detailmap und Alphamap). Das habe ich zum Test jedoch durch frühzeitiges return abgeklemmt. (Darum die TextureStageStates..).
Nun zum Problem:
Eigentlich dürfte es nicht schwierig sein, die Colormap einfach ohne irgendwelches AlphaBlending etc. zu zeichnen.
Mein Resultat sieht allerdings so aus:
Und noch aus anderer Perspektive um zu zeigen, dass sich das ganze mit der Position der Kamera ändert:
Hier der entscheidende Codeteil:
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
13
|
d3ddev->SetRenderState( D3DRS_ZENABLE, D3DZB_TRUE );
d3ddev->SetRenderState( D3DRS_ALPHABLENDENABLE, FALSE );
d3ddev->SetTextureStageState( 0, D3DTSS_TEXCOORDINDEX, 0 );
d3ddev->SetTexture( 0, pTexture );
d3ddev->SetTextureStageState( 0, D3DTSS_COLORARG1, D3DTA_TEXTURE );
d3ddev->SetTextureStageState( 0, D3DTSS_COLORARG2, D3DTA_CURRENT );
d3ddev->SetTextureStageState( 0, D3DTSS_COLOROP, D3DTOP_MODULATE );
d3ddev->SetTextureStageState( 1, D3DTSS_COLOROP, D3DTOP_DISABLE );
d3ddev->SetRenderState( D3DRS_CULLMODE, D3DCULL_CW );
d3ddev->SetStreamSource( 0, vBuffer, 0, sizeof(SVertex) );
d3ddev->SetIndices( iBuffer );
d3ddev->DrawIndexedPrimitive( ... );
|
Was ich bis jetzt herausgefunden habe:
- Das gleiche Produkt kommt bei ausgeschaltetem Licht heraus (damit fallen auch falsche Normalen weg)
- Es muss irgendwie mit den TextureStageStates zusammenhängen, da wenn ich für D3DTSS_COLOROP den Wert D3DTOP_SELECTARG2 einsetze (entspricht ja in dem Fall den Diffuse Wert) kommt dieses Muster nicht. Logischerweise kann ich dann auch nicht die Colormap darüberziehen
- Es sieht aus wie Nebel, aber selbst ohne Nebel gleiches Resultat
Ich sitze jetzt schon mehrere Tage an dem Problem und hab noch immer keinen Schimmer, woran das liegt.
Möglichweise bin ich da auch schon blind geworden
Ich hoffe ihr könnt mir bei diesem Problem helfen.
Dank vorweg,
iSmokiieZz