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

11

19.04.2007, 21:01

Nun gut hier ist der Effect-Code:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
VECTOR vPosition;
VECTOR vDirection;

technique TECHNIQUE1
{
    pass PASS1
    {
        // Einen Richtungslicht erstellen
        LightType[0] = DIRECTIONAL;
        LightDiffuse[0]   = {1.0, 1.0, 1.0};
        LightSpecular[0]  = {1.0, 1.0, 1.0}; 
        LightAmbient[0]   = {0.1, 0.1, 0.1};
        LightDirection[0] = {0.0, -1, 1.0};

        // Einen Spotlicht erstellen
        LightType[1] = SPOT;
        LightDiffuse[1]   = {1.0, 1.0, 1.0};
        LightSpecular[1]  = {1.0, 1.0, 1.0}; 
        LightAmbient[1]   = {0.1, 0.1, 0.1};
        LightPosition[1] = <vPosition>;
        LightDirection[1] = <vDirection>;
        LightRange[1] = 1000;
        LightTheta[1] = 0.523;
        LightPhi[1]   = 1.57;
        LightAttenuation0[1] = 0.0;
        LightAttenuation1[1] = 0.025;
        LightAttenuation2[1] = 0.0;
        LightFalloff[1]      = 1.0;

        // Licht einschalten
        LightEnable[0] = True;
        LightEnable[1] = True;
        Lighting = True;
    }
}


Und hier der C++-Code: (verkürzt, Render-Methode)

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
    // Die Richtung und die Position des Spotlichts setzen

    D3DXVECTOR4 vSpotPosition;
    D3DXVECTOR4 vSpotDirection;
    vSpotPosition.x = g_vCameraPosition.x;
    vSpotPosition.y = g_vCameraPosition.y;
    vSpotPosition.z = g_vCameraPosition.z;
    vSpotPosition.w = 0.0f;
    vSpotDirection.x = vCameraDirection.x;
    vSpotDirection.y = vCameraDirection.y;
    vSpotDirection.z = vCameraDirection.z;
    vSpotDirection.w = 0.0f;

    // Die Werte in den Effekt übertragen

    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);
    }

    // Den Effekt (Licht, Render-States..) setzen und speichern

    int iNumPasses = g_pEffect->Begin(FALSE, TRUE);         
    for(int iPass = 0; iPass < iNumPasses; iPass++)
    {
        g_pEffect->Pass(iPass);                         
    }
    g_pEffect->End();

Ich glaube ich habe alles berücksichtigt oder etwa nicht?
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

12

19.04.2007, 22:26

in deiner effekt datei ist der variabletyp VECTOR. den kenne ich gar nicht^^. was ist das genau?
ich nutze immer nur float4. ist das das selbe? ;)

Progater

Treue Seele

  • »Progater« ist der Autor dieses Themas

Beiträge: 119

Wohnort: BW

  • Private Nachricht senden

13

19.04.2007, 23:17

Ich glaub' schon, dass VECTOR und FLOAT4 die selbe Sache verrichten.
Aber egal welchen Typ ich wähle, mein Beispielprogramm wird noch immer falsch beleuchtet.
Ich vermute mal, dass der Richtungsvektor irgendwie anders gesetzt wird. Ich kenne mich nämlich in Effekt-Dateien noch nicht so gut aus.
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

14

20.04.2007, 14:33

effekt datein nutze ich auch nicht so oft. ich nehme normalerweise immer richtige shader programme ;)

Progater

Treue Seele

  • »Progater« ist der Autor dieses Themas

Beiträge: 119

Wohnort: BW

  • Private Nachricht senden

15

21.04.2007, 17:06

Sorry, aber so weit bin ich noch nicht :(
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

16

21.04.2007, 20:19

ja kein ding, aber ich habe keine ahnung warum das nicht geht. aber beim übergeben, schlägt die methode aber nicht fehl oder?

Progater

Treue Seele

  • »Progater« ist der Autor dieses Themas

Beiträge: 119

Wohnort: BW

  • Private Nachricht senden

17

21.04.2007, 21:03

Nene, die schlägt nicht fehl. Aber vielleicht ist es ein DirectX-Effekt-Fehler?
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

18

22.04.2007, 09:32

welches sdk nutzt du denn?

Progater

Treue Seele

  • »Progater« ist der Autor dieses Themas

Beiträge: 119

Wohnort: BW

  • Private Nachricht senden

19

22.04.2007, 15:28

Das Microsoft DirectX 9.0 SDK Update (Summer 2004), das mit der 2. Auflage geliefert wird.
Ich habe schon versucht die (February 2007) zu installieren, aber es hat keinen Effect-Editor. Somit habe ich es gelassen.
Summer 2004 hat doch nicht soooo viele Fehler?
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

20

22.04.2007, 15:37

ich habe dir ne pn geschrieben....^^

Werbeanzeige