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

Progater

Treue Seele

  • »Progater« ist der Autor dieses Themas

Beiträge: 119

Wohnort: BW

  • Private Nachricht senden

1

17.04.2007, 22:00

Richtungsvektoren in Effekten setzen

Hallo Leute,
ich habe so 'ne Frage. Ich habe versucht dem Spotlicht eine Richtung mitten in der Effektdatei zu verpassen. Also etwa: VECTOR Direction; LightDirection[0] = <Direction>;
Diese Variable hat dann in C++-Code die Richtung der Kamera. Irgendwie bleibt das Rechteck das beleuchtet werden soll schwarz.
Beim Setzen der Position geht aber alles glatt, wenn ich für Direction direkt in der Effekt-Datei so was hinzufüge "= {0.0, 0.0, 1.0, 0.0};".
Hier der Code:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
    if(FAILED(hResult = g_pEffect->GetEffect()->SetVector("vPosition", &vSpotPosition))) 
    {
        // Fehler!

        TB_ERROR_DIRECTX("g_pEffect->GetEffect", hResult, TB_ERROR);
    }
    if(FAILED(hResult = g_pEffect->GetEffect()->SetVector("vDirection", &vSpotDirection))) 
    {
        // Fehler!

        TB_ERROR_DIRECTX("g_pEffect->GetEffect()->SetVector", hResult, TB_ERROR);
    }

Könnte mir jemand sagen, wieso der Richtungsvektor an dieser Stelle nicht richtig gesetzt wird?
Danke im Voraus.
To go back to the drawing board is not everyone's cup of tea! :-)

BlackSnake

Community-Fossil

Beiträge: 1 549

Beruf: Student

  • Private Nachricht senden

2

17.04.2007, 22:35

haste die position irgendwie null: {0.0f, 0.0f, 0.0f, 0.0f}??

Progater

Treue Seele

  • »Progater« ist der Autor dieses Themas

Beiträge: 119

Wohnort: BW

  • Private Nachricht senden

3

17.04.2007, 22:50

Also die Kamerapositon befindet sich bei tbVector3(0.0f, 0.0f, -10.0f), die Position des Spotlichts bei tbVector3(0.0f, 0.0f, -3.0f).
Das Problem liegt hier eigentlich darin, dass wenn ich die Richtung in C++-Code eingebe z.B. tbVector3(0.0f, 0.0f, 1.0f), bleibt alles schwarz, nicht jedoch wenn die Richtung in der Effektdatei schon gesetzt wurde: VECTOR vDirection = {0.0, 0.0, 1.0, 0.0};
To go back to the drawing board is not everyone's cup of tea! :-)

BlackSnake

Community-Fossil

Beiträge: 1 549

Beruf: Student

  • Private Nachricht senden

4

18.04.2007, 13:10

axo.
du übergibst aber auch mit der vectoren funktion:

C-/C++-Quelltext

1
Effect->SetVector(L"LightPosition", (D3DVECTOR4*) &LightVec);

Progater

Treue Seele

  • »Progater« ist der Autor dieses Themas

Beiträge: 119

Wohnort: BW

  • Private Nachricht senden

5

18.04.2007, 21:36

Ja natürlich. Das steht im oberen Listing.
vSpotPosition ist ja vom Typ D3DXVECTOR4.
To go back to the drawing board is not everyone's cup of tea! :-)

BlackSnake

Community-Fossil

Beiträge: 1 549

Beruf: Student

  • Private Nachricht senden

6

18.04.2007, 22:01

noch mal ne frage, die vielleicht ein wenig dumm erscheint:

du übergibst den parameter aber jedes mal oder? nicht nur in der init methode.

Progater

Treue Seele

  • »Progater« ist der Autor dieses Themas

Beiträge: 119

Wohnort: BW

  • Private Nachricht senden

7

18.04.2007, 22:15

Und ob! Genau gesagt in der Render-Methode.
To go back to the drawing board is not everyone's cup of tea! :-)

BlackSnake

Community-Fossil

Beiträge: 1 549

Beruf: Student

  • Private Nachricht senden

8

18.04.2007, 22:33

wenn du das per SetVector übergibst, hast du dann den namen auch richtig geschrieben. nicht das es die variable gar nicht gibt, an die du übergeben möchtest ;)

Progater

Treue Seele

  • »Progater« ist der Autor dieses Themas

Beiträge: 119

Wohnort: BW

  • Private Nachricht senden

9

18.04.2007, 22:42

Also die Variablennamen stimmen schon. Und wenn es nicht so wäre, würde ich die Fehlermeldung in der Log-Datei lesen können (wie der obere Listing zeigt, wird die SetVector-Methode auf Fehler untersucht).
Es ist aber nicht der Fall!
To go back to the drawing board is not everyone's cup of tea! :-)

BlackSnake

Community-Fossil

Beiträge: 1 549

Beruf: Student

  • Private Nachricht senden

10

19.04.2007, 08:18

das beste an der sache ist ja eigentlich das, wenn du das ja in der effekt datei gleich hinschreibst, dass es dann geht. entweder läuft bei der ünergabe schief, oder variable macht probleme.
zeig mal deinen effeltcode, wenn du da nichts gegen hast.
biste dir sicher, dass die variablen, die du übergibst auch werte habe?

Werbeanzeige