Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

neido

Treue Seele

  • »neido« ist der Autor dieses Themas

Beiträge: 225

Wohnort: Wien

  • Private Nachricht senden

1

22.07.2008, 18:04

Problem mit Nebel

Guten Abend!

Ich habe heute das Kapitel mit dem Nebel durchgemacht und versucht, die Übungsaufgaben zu machen (2.8.5). Es sollte das Gleiche sein, wie das auf der CD, ist aber nur nachgeschrieben und nicht kopiert (zumindest großteils ;)). Ohne Nebel funktioniert alles Perfekt: Es gibt hunderte von Würfeln mit Textur zwischen denen man herumfahren kann. Aber wenn ich den Nebel einschalte, sind entweder alle Würfel in Nebelfarbe (Linear) oder keiner (exp/exp2).

Die Render States schauen aus wie folgt:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
    g_pD3DDevice->SetRenderState(D3DRS_LIGHTING, FALSE);
    g_pD3DDevice->SetRenderState(D3DRS_CULLMODE, D3DCULL_NONE);
    g_pD3DDevice->SetRenderState(D3DRS_DITHERENABLE, TRUE);
    g_pD3DDevice->SetRenderState(D3DRS_FOGENABLE, TRUE);
    g_pD3DDevice->SetRenderState(D3DRS_FOGVERTEXMODE, D3DFOG_EXP);
    g_pD3DDevice->SetRenderState(D3DRS_FOGTABLEMODE, D3DFOG_NONE);
    g_pD3DDevice->SetRenderState(D3DRS_FOGSTART, 1000);
    g_pD3DDevice->SetRenderState(D3DRS_FOGEND, 2000);
    g_pD3DDevice->SetRenderState(D3DRS_FOGDENSITY, 0.1);
    g_pD3DDevice->SetRenderState(D3DRS_FOGCOLOR, D3DCOLOR_XRGB(200, 0, 0));
    g_pD3DDevice->SetRenderState(D3DRS_RANGEFOGENABLE, TRUE);


Fogstart/end hab ich mit werten zw 0 und 2000 probiert, Density zw 0.01 und 1000. Immer dasselbe Ergebnis.

Ich weiß wieder Mal überhaupt nicht, wo der Fehler sein soll, notfalls poste ich alles, aber das wird ja nicht gerne gesehen.

neido

Treue Seele

  • »neido« ist der Autor dieses Themas

Beiträge: 225

Wohnort: Wien

  • Private Nachricht senden

2

23.07.2008, 20:07

Ich pushe das mal wieder ein Bisschen nach oben ;)

Gesagt sei noch, dass Licht auch perfekt funktioniert. Wenn ihr mehr Informationen braucht bitte melden

Gotbread

Alter Hase

Beiträge: 421

Beruf: Student (Etechnik) + Hiwi

  • Private Nachricht senden

3

20.08.2008, 12:45

ich vermute mal, es liegt daran dass die float-werte abgerundet werden.

du musst schon den float wert in ein dword reincasten

C-/C++-Quelltext

1
2
3
4
DWORD ftodw(float f)
{
    return *reinterpret_cast<DWORD>(&f);
}

Link
Mfg Goti
www.gotbread.bplaced.net
viele tolle spiele kostenlos, viele hardware-basteleien :)

"Es ist nicht undicht, es läuft über" - Homer Simpson

TrommlBomml

Community-Fossil

Beiträge: 2 117

Wohnort: Berlin

Beruf: Software-Entwickler

  • Private Nachricht senden

4

20.08.2008, 12:58

aber imho doch nich mit reinterpret_cast?

Sheddex

unregistriert

5

20.08.2008, 13:09

Gotbread, du hast ein "*" vergessen: *reinterpret_cast<DWORD*>(&f) wäre richtig.

neido

Treue Seele

  • »neido« ist der Autor dieses Themas

Beiträge: 225

Wohnort: Wien

  • Private Nachricht senden

6

26.08.2008, 10:08

Vielen Dank, mit dem cast funzt alles prächtig.

7

26.08.2008, 13:14

steht übrigens auch in der tabelle der Nebel render states.
bei D3DRS_FOGSTART wird es erklärt und dies zählt dann natürlich auch für die andern RS wo ein solcher Wert erwartet wird

ich habs aber beim ersten mal auch vergessen :lol:

Werbeanzeige