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

22.11.2004, 12:55

DirectX Oktober Update kompatibel zu Tribase ? (VS .NET)

Hallo,
ich hab gerade mein Tribase-Programm umgestellt von VS6.0 auf VS.NET und ausserdem von DX9.0b auf DX9.0c also das Oktober 2004 Update.

Hab die Include und Lib dateien von DX und Tribase in mein Projekt einbezogen. Dann kompiliert und gestarted.

Tribase startet, also die Einstellungsmaske wird noch korrekt ausgeführt (wo man auflösung u.s.w. einstellt) wenn ich aber dann auf OK (wenn also das 3D fenster starten sollte ) klicke erscheint eine Fehlermeldung wie folgt:

*** Fehlerfenster ***
Form Name: Microsoft Visual C++ Debug Library
Meldung: Debug Error !

Program: d:\....\meinspiel.exe
Module:
File: i386\chkesp.c
Line: 42
The value of ESP was not properly saved across a function call. This is usually a result of calling a function declared with one calling convention with a function pointer declared with a different calling convention.
(Press Retry to debug the application).
*** endefenster ***

Ich drücke also auf Wiederholen, daraufhin kommt ein fenster:
*** FehlerFenster ***
Name: Microsoft Development Environment
Message: Unhandled exception at 0x1009875e (TriBaseD.dll) in Aurenvar.exe: User breakpoint.
Buttons: Break, Continue, Help
*** endefenster ***

(hab keinen Breakpoint gesetzt)

Ich drücke also auf Break (bei continue fängt alles von vorne an)
daraufhin öffnet sich die tbEffect.cpp und es erscheint in der tbEffect::SetTechnique(int iTechnique) ein grüner Pfeil vor

C-/C++-Quelltext

1
2
3
4
5
6
7
if(SUCCEEDED(m_pEffect->ValidateTechnique(hTechnique)))
            {
                // Die Technik ist o.k.! Aktivieren und wir sind fertig.

                m_pEffect->SetTechnique(hTechnique);

                return TB_OK;
            }


Kann mir irgendjemand helfen, ich weiß nämlich absolut nicht weiter !!! Und ich möchte auch nicht wieder zurück auf DX9.0b und VS6.0 umstellen!!!

Danke im voraus für jede Hilfe !!!
mfG

Volrath

Frischling

Beiträge: 14

Beruf: Student Informatik

  • Private Nachricht senden

2

22.11.2004, 19:43

Hallo,

ich habe auch gerade auf das Oktober update umgestellt, damit endlich mal der Textureditor bei mir läuft :-)

Ich hatte ebenfalls ein paar Probleme mit tbEffect. Anscheinend wurde da etwas geändert. Und zwer gibt es wie es aussieht keine Pass Methode bei der D3DXEFFECT Schnittstelle mehr, diese wurde in BeginPass und EndPass gesplittet, die vor und nach dem Render aufgerufen werden müssen. Als ich das korrigiert hatte konnte ich TriBase wieder kompilieren.

Versuch erst mal, tribase neu zu kompilieren. Erst wenn das reibungslos klappt würde ich versuchen, die Bibliothek in dein Projekt zu linken.

Anonymous

unregistriert

3

23.11.2004, 10:46

danke für den tip, hab jetzt erst mal TriBase kompiliert und ->Pass mit ->BeginPass ersetzt. TriBase wurde jetzt komplett richtig kompiliert, ohne Fehler. Der Fehler in meinem Programm besteht aber weiterhin. Hier der Ausschnitt wo der fehler passiert:

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
tbResult tbEffect::SetTechnique(int iTechnique) // = -1

{
    D3DXHANDLE hTechnique;

    // Parameter prüfen

    if(iTechnique < -1 || iTechnique >= (int)(m_Desc.Techniques)) TB_ERROR_INVALID_VALUE("iTechnique", TB_ERROR);


    // Wenn -1 angegeben wurde, dann müssen wir die erste gültige

    // Technik suchen.

    if(iTechnique == -1)
    {
        // Alle Techniken durchgehen und überprüfen

        for(int iTest = 0; iTest < (int)(m_Desc.Techniques); iTest++)
        {
            // Die Technik abfragen und ValidateTechnique aufrufen, um sie zu prüfen

            hTechnique = m_pEffect->GetTechnique(iTest);
            if(SUCCEEDED(m_pEffect->ValidateTechnique(hTechnique)))
            {
                // Die Technik ist o.k.! Aktivieren und wir sind fertig.

                m_pEffect->SetTechnique(hTechnique);

                return TB_OK;
            }
        }

        // Keine gültige Technik gefunden! Macht aber nichts, die Techniken

        // funktionieren meistens trotzdem.

        TB_WARNING("Es wurde keine gültige Technik gefunden!");
    }
    else
    {
        // Die angegebene Technik abfragen und aktivieren

        m_pEffect->SetTechnique(m_pEffect->GetTechnique(iTechnique));
    }

    return TB_OK;
}


wobei der Debugger hTechnique als <Bad Ptr> bezeichnet und der Fehler: "expression cannot be evalueted" auftritt (auch unter hTechnique).
Kennt das neue DX9.0c auch keine Methode GetTechnique ?? In der Doku gibt es die Methode schon ... was läuft da noch falsch ???

Volrath

Frischling

Beiträge: 14

Beruf: Student Informatik

  • Private Nachricht senden

4

23.11.2004, 17:11

Hm.. da bin ich jetzt auch etwas überfragt :-(

Die Pfade zu den einzelnen Verzeichnissen sind korrekt gesetzt ? (lib, include)

Bei einer älteren DirectX Version musste ich mal die Pfade nach ganz oben in die Liste schieben, damit es kompiliert hat. Ich glaube zwar nicht, das es daran liegt, aber einen Versuch ist es ja mal Wert ...




Ansonsten könnte es natürlich sein das in Dx9c mehr an den Effekten geändert hat als ich zuerst dachte ... Benutzt denn deine Applikation die Effekte überhaupt ? Oder kommt der Fehler auch wenn du keine Effekte benutzt ?

Anonymous

unregistriert

5

23.11.2004, 17:27

Wie gesagt: Compilieren tut ja alles ordentlich, der fehler tritt zur laufzeit auf. Und zwar genau zu dem Zeitpunkt ab dem was Angezeigt werden soll (3D mäßig).
Werd jetzt aber mal schauen ob ich das ganze mit VS.NET und DX9.0b zum laufen bekomme um herauszufinden ob es jetzt am neuen VS oder DX liegt.

Werbeanzeige