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

Andreas

Frischling

  • »Andreas« ist der Autor dieses Themas

Beiträge: 77

Beruf: Schüler

  • Private Nachricht senden

1

10.02.2008, 18:13

Effektproblem

Hi, sry das ich im Moment so viele Threads offen hab:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
if(SUCCEEDED(g_pEbenenEffekt->GetEffect()->ValidateTechnique(g_pEbenenEffekt->GetEffect()->GetTechnique(1))))
    {
        TB_INFO("SOLLTE FUNKTIONIEREN");
    }
    else TB_INFO("SOLLTE NICHT FUNKTIONIEREN");

    if(SUCCEEDED(g_pEbenenEffekt->GetEffect()->ValidateTechnique(g_pEbenenEffekt->GetEffect()->GetTechnique(0))))
    {
        TB_INFO("SOLLTE FUNKTIONIEREN1");
    }
    else TB_INFO("SOLLTE NICHT FUNKTIONIEREN1");


ergibt die Meldung:

Sollte Funktionieren
Sollte NichtFunktionieren1

Tauscht man die beiden Blöcke einfach nur:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
if(SUCCEEDED(g_pEbenenEffekt->GetEffect()->ValidateTechnique(g_pEbenenEffekt->GetEffect()->GetTechnique(0))))
    {
        TB_INFO("SOLLTE FUNKTIONIEREN1");
    }
    else TB_INFO("SOLLTE NICHT FUNKTIONIEREN1");

    if(SUCCEEDED(g_pEbenenEffekt->GetEffect()->ValidateTechnique(g_pEbenenEffekt->GetEffect()->GetTechnique(1))))
    {
        TB_INFO("SOLLTE FUNKTIONIEREN");
    }
    else TB_INFO("SOLLTE NICHT FUNKTIONIEREN");


ergibt die Meldung:

Sollte nicht Funktionieren1
Sollte nicht Funktionieren

Der Effekt sieht so aus:

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
33
34
35
36
37
38
39
40
41
TEXTURE Texture1;

TECHNIQUE T1
{
    PASS P1
    {
        Texture[0]          = <Texture1>;

        MaterialDiffuse         = {1.0, 1.0, 1.0};
        MaterialAmbient         = {1.0, 1.0, 1.0};
        MaterialEmissive        = {0.0, 0.0, 0.0};

        FogTableMode            = Exp;
        FogEnable           = True;
        FogColor            = {0.0, 1.0, 0.0, 1.0};
        FogStart            = 3.0f;
        FogEnd              = 6.0f;
        



        ColorOp[1]          = Modulate;
        ColorArg1[1]            = Texture;
        ColorArg2[1]            = Current;

    }
};


TECHNIQUE T2
{
    PASS P1
    {
        Texture[0]          = <Texture1>;

        MaterialDiffuse         = {1.0f, 1.0f, 1.0f};
        MaterialAmbient         = {1.0f, 1.0f, 1.0f};
        MaterialEmissive        = {0.0f, 0.0f, 0.0f};

    }
}


Bleibt da irgendein Fehlerflag gesetzt, dass man erst wieder löschen muss, oder warum erkennt er beim zweiten Mal die zweite Technik nicht mehr als Valid an?

Viele Grüße
Andreas

Bugger

Frischling

Beiträge: 66

Wohnort: Bezirk Freistadt

Beruf: EDVO HTL Schüler

  • Private Nachricht senden

2

11.02.2008, 08:08

Keine Ahnung warum du den Aufrufcode 2x reinstellst... der Fehler passiert jedes mal bei der 1. Technique(bzw. 0 Index) - Der Code sieht soweit gut aus, aber was mir auffällt ist das du teilweise keine Suffix(1.0f) setzt ;) ... könnte das dein Problem sein?

Das Semikolon an der letzten Klammer der 1. Technique kannste dir denk ich mal sparen...

Außerdem, nimmst du beim ColorOp und Co. bewusst den 2.(Index 1)?
Hältst du nicht den Bug in Ehren, wird er dich noch manches Lehren.

Ein Gespräch setzt voraus, dass der andere Recht haben könnte.

Andreas

Frischling

  • »Andreas« ist der Autor dieses Themas

Beiträge: 77

Beruf: Schüler

  • Private Nachricht senden

3

11.02.2008, 19:04

Hi, der Code ist einmal vertauscht, hatte ich nur nochmal vertauscht hingeschrieben.
Ich denke, das der Effekt soweit syntaktisch in Ordnung ist, sonst hätte er ja schon beim erstellen gemeckert.
Was der Effekt tut, ist eigentlich auch nicht so wichtig, es ist nur das die erste Technik Pixelnebel enthält, welcher auf dem Testrechner nicht funktioniert.
Mein Problem war jetzt, dass er, wenn ich die zweite Technik als erstes auf Funktionalität prüfe, er mir sagt, dass diese Technik funktionieren würde. Anschließend prüfe ich die zweite und Technik, welche wie erwartet die Ausgabe gibt, dass sie nicht funktionieren würde.

Jetzt habe ich die Reihenfolge, in der geprüft wurde einfach mal verändert und nun sagt er mir, dass die zweite Technik auch nicht mehr funktonieren würde.
Dieses kann ich nicht nachvollziehen, woran liegt das, dass er die nicht mehr als gültig erkennt?

Werbeanzeige