Ich arbeite an einem einfachen 2D-Spiel mit direct3d 9. Es ist ein isometrisches Spiel mit Diamantplättchen und einer versetzten Karte. Das habe ich:
Wie Sie sehen, habe ich eine Art Nebel, der durch eine Nebelmatrix ergänzt wird, die wahr (klares Gelände) oder falsch (obskurer Terraner) ist. Aber das Ergebnis ist sehr klobig. Der Nebel bewegt sich, während sich der Spieler um Kacheln bewegt, aber nicht um Pixel. Grundsätzlich überprüfe ich für jede Fliese, ob es Nebel gibt, wenn ja, ändere ich einfach die Farbe dieser Fliese:
D3DCOLOR tile_color = 0xffffffff;
if(scene->fog[i+mapx][j+mapy] == FOG_NONE) { tile_color = 0x666666FF; }
g_pSprite->Draw(texTilesNew,&rect,NULL, &D3DXVECTOR3(pantx,panty,0.0f), tile_color);
Wo der Parameter tile_color ist:
Eine Farbstruktur. Die Farb- und Alphakanäle werden durch diesen Wert moduliert. Der transparente Wert behält die ursprüngliche Quellfarbe und die Alpha-Daten bei.
Ich möchte auch, dass der Nebel glatter wird, dafür habe ich dieses "Tutorial" befolgt, aber ich habe es nicht geschafft, es herauszufinden, weil ich denke, dass das Tutorial eine andere Art von Nebel implementiert als ich.
http://www.appsizematters.com/2010/07/how-to-implement-a-fog-of-war-part-2-smooth/