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

1

17.08.2007, 15:09

Beleuchtung

Hallo!
Ich habe ein Problem mit Beleuchtung!
Ich habe keine Lichtquelle und kein Material gesetzt. Das Renderstate D3DRS_LIGHTING ist TRUE.
Ich hätte mir gedacht eigentlich sollte man nun nichts mehr sehen. Trotzdem ist alles sichtbar, wie wenn Beleuchtung deaktiviert wäre.

Mein Vertexformat:

C-/C++-Quelltext

1
2
3
4
5
6
7
struct SVertex_Ground
{
    FLOAT x, y, z;
    FLOAT tu, tv;
    static DWORD dwFVF;
};
DWORD SVertex_Ground::dwFVF = D3DFVF_XYZ | D3DFVF_TEX2;


und ein Ausschnit aus der Renderfunktion:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
         D3DDevice->SetRenderState(D3DRS_LIGHTING, TRUE);
                
        D3DDevice->SetTextureStageState(0, D3DTSS_COLORARG1, D3DTA_TEXTURE);
        D3DDevice->SetTextureStageState(0, D3DTSS_COLOROP, D3DTOP_SELECTARG1);
        D3DDevice->SetSamplerState(0, D3DSAMP_ADDRESSU, D3DTADDRESS_WRAP);
        D3DDevice->SetSamplerState(0, D3DSAMP_ADDRESSV, D3DTADDRESS_WRAP);

        // Links unten

        aVertex[0].x  = (float)(-10*MAP_X/2);
        aVertex[0].y  = 0.0f;
        aVertex[0].z  = (float)(-10*MAP_Z/2);
        aVertex[0].tu = 0.0f;
        aVertex[0].tv = (float)(MAP_Z);

        // Links oben

                ...
                ...
                ...

         D3DDevice->DrawPrimitiveUP(D3DPT_TRIANGLESTRIP, 2, aVertex, sizeof(SVertex_Ground));

Eine Textur hab ich geladen und gesetzt, die Farbe wird nur von dieser Textur übernommen (siehe TexturStageStates). Kann es eventuell daran liegen?

Gezeichnet wird hier nur ein Quadrat. Die Berechnung der 4 Eckpunkte habe ich etwas gekürzt, ich denke hier kann nichts schief gehen.

Was kann für diesen Effekt verantwortlich sein?
Für hilfreiche Antworten wäre ich dankbar

PS: Mit Materialien und Licht siehts trotzdem so aus, wie wenn das Licht deaktiviert wäre.

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

2

17.08.2007, 15:25

Dein Vertexformat ist kaputt.
Das Format (dwFVF) passt nicht zur Struktur.

3

17.08.2007, 15:31

5 Minuten zu kurz hab ich nachgedacht.... :idea:

Also, ich nehme an ich muss in die Farbberechnungen D3DTA_DIFFUSE miteinbeziehen. :roll:
Also in etwa so:

C-/C++-Quelltext

1
2
3
D3DDevice->SetTextureStageState(0, D3DTSS_COLORARG1, D3DTA_TEXTURE);        
        D3DDevice->SetTextureStageState(0, D3DTSS_COLORARG1, D3DTA_DIFFUSE);    
        D3DDevice->SetTextureStageState(0, D3DTSS_COLOROP, D3DTOP_MODULATE);


Ich denke das müsste dann funktionieren, also, tut mir leid für diesen sinnlosen Thread, aber vielleich hat ja mal wer das selbe Problem und wird gleich fündig...

Ich hab meine Lösung noch nicht ausprobiert, aber ich denke es müsste funktionieren... Wenn nicht meld ich mich eh nochmal...

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

4

17.08.2007, 15:33

Hallo,
hast du meinen Hinweis nicht gelesen?
Dein Vertexformat ist falsch!

Und diese States musst du nicht so setzen, weil das die Standardwerte sind.
Außerdem setzt du ARG1 doppelt und ARG2 gar nicht.

5

17.08.2007, 15:41

Zitat von »"David Scherfgen"«

Hallo,
hast du meinen Hinweis nicht gelesen?
Dein Vertexformat ist falsch!

Und diese States musst du nicht so setzen, weil das die Standardwerte sind.
Außerdem setzt du ARG1 doppelt und ARG2 gar nicht.


Ja, hab den Hinweis zu spät gelesen. Also, das Vertexformat ist klar, ich hab nur eine Textur. Ich hab keine Ahnung wie ich da auf Tex2 gekommen bin...

Natürlich meinte ich ARG2. Also, nun funktioniert es und alles ist schön schwarz^^

Ja, das sind die Standardwerte. Ich wollte nur betonen, dass ich es so wie oben nicht machen darf.

Danke für die Hinweise!
MfG, oerji

Werbeanzeige