Direct3DCreate schlägt fehl



  • Hmm... heißt "match" nicht, dass sie genau gleich sein muss? ;c)
    Wie dem auch sei, in d3d8.h wird D3D_SDK_VERSION für Direct3D 8 definiert. Bist du sicher, dass du nicht aus Versehen noch d3d9.h eingebunden hast, die D3D_SDK_VERSION ja erneut definiert?

    Ja, "match" heißt "gleich". Ja, ich bin sicher. Hätte ich d3d9.h auch eingebunden, würde der Compiler ja auch 'ne "define doppelt"-Meldung schmeissen...

    Wie dem auch sei, das ist wahrscheinlich selbstverständlich, aber haben deine Kumpels denn DirectX8 installiert?

    Ja, einer DX 8, einer DX 9. Wäre dem nicht so, käme beim Starten der EXE aber auch eine von Microsoft geschmissene Messagebox "DirectX 8 DLL nicht gefunden" oder so.

    Dachte erst, ich benutze schon irgendwelche DX-Features, die von den ander'n Karten nich' unterstützt werden (nur meine GF3 ist ja DX8-"kompatibel"). Aber es läuft auch auf 'nem alten PII mit Riva128 und Voodoo2! Außerdem wird hier ja noch gar nix an Auflösung, Depth-Buffer oder sonstwas gemacht, sondern nur das D3D-Interface acquired!

    Echt ätzend.

    Igitt.
    Schreib doch bitte einfach selbst, welche Version Du verwenden möchtest, so hängt die verwendete Version einzig und allein von der SDK-Version des Rechners auf dem Du kompilierst ab.

    Aber genau so steht's in'n DX Docs...!
    Und was sollte ich bitte dann als Parameter übergeben!? 220?
    Kompiliert hab' ich's - konnt's aber noch net testen.
    Aber das dürfte ja Jacke wie Hose sein...
    Außerdem hängt's dann net von DX-Version, die ich draufhab' (9) ab, sondern von den eingebundenen Header-Files, und das ist nur d3d8.h...

    :-(((

    Help appreciated.
    Sarge.



  • Zeig mal ein bissel mehr Code. An der Zeile, die Du gepostet hast liegt's sicher nicht.

    MfG Jester



  • If PacMan had affected us as kids we'd be running around in dark rooms, munching
    pills and listening to electronic music.

    *GRINS .. den Spruch hat mal der CHef von Nintendo gesagt . HEHE

    .. weitermachen



  • Zeig mal ein bissel mehr Code. An der Zeile, die Du gepostet hast liegt's sicher nicht.

    Doch, es liegt GENAU an dieser Zeile, da ich ja mit

    m_pD3D = Direct3DCreate8(D3D_SDK_VERSION);
        if(m_pD3D == NULL)
        {
        Logge->Fehler("Kann das Direct3D8-Interface nicht kreieren");
            return false;
        }
    

    auf NULL überprüfe, und falls das gegeben ist mit "return false" aus der ganzen Initialisierungs-Routine rausspringe...

    Programm-Ende!

    ...und genau DAS ist der letzte Eintrag im Logfile...

    Danke trotzdem, Sarge

    P.S.: Echt keiner'n Schimmer? 😞



  • Hallo!

    Nochmal langsam:

    In
    dieser
    Codezeile
    ist
    kein
    Fehler

    Deswegen:

    Poste mal noch mehr Code außenrum. Natürlich schlägt es dort fehl, aber:

    Wenn mein Rechner bei

    *c ='a'; abschmiert, dann liegt der Fehler halt in der Zeile

    char * c;

    weil ich vergessen habe den Speicher bereitzustellen.
    Also, zeig doch noch etwas mehr Code... vor allem von *vor* dem Code, daß Du den Fehler abfangen kannst glaub ich Dir ja.

    MfG Jester



  • Original erstellt von <Sgt. Nukem>:
    Und was sollte ich bitte dann als Parameter übergeben!? 220?

    42 oder die Ausgabe von 'std::cout << "D3D_SDK_VERSION";', je nach Lust und Laune.



  • Original erstellt von nman:
    [quote]Original erstellt von <Sgt. Nukem>:
    [qb]Und was sollte ich bitte dann als Parameter übergeben!? 220?

    42 oder die Ausgabe von 'std::cout << "D3D_SDK_VERSION";', je nach Lust und Laune.[/QB][/QUOTE]
    Und was hat das dann für einen Sinn?



  • Original erstellt von TGGC:
    Und was hat das dann für einen Sinn?

    Normalerweise weiß man welche DX-Version man verwenden will, wozu also dieses define?



  • Original erstellt von nman:
    [quote]Original erstellt von TGGC:
    [qb]Und was hat das dann für einen Sinn?

    Normalerweise weiß man welche DX-Version man verwenden will, wozu also dieses define?[/QB][/QUOTE]
    Damit man mit verschiedenen Headern und libs bauen kann, die aber immer zueinander passen müssen. Wenn du jetzt einen festen Wert einbaust, dann ist das nicht mehr gewährleistet.



  • Hmm, mal eine ganz dämliche Frage: Gibt es jetzt für jede neue DX einen neuen Header? (Im Sinne von DX8: d3d8.h, DX9: d3d9.h)

    Denn dann würde das zwar Sinn machen, aber den Sinn von versionsspezifischen Headern für DirectX sehe ich trotzdem nicht.



  • Wieso nicht? Es kommen doch immer wieder neue Funktionen hinzu 😉



  • Weil mit COM elegantere Lösungen nicht schwer gewesen wären (wenn MS schon ständig die Interfaces ändern muss).



  • Weil mit COM elegantere Lösungen nicht schwer gewesen wären (wenn MS schon ständig die Interfaces ändern muss).

    Wie denn!?! Es wird COM doch super benutzt in DirectX. Selbst auf 'nem System, das DirectX 9 Retail drauf hat funzen auch die alten DirectX 5.1b Anwendungen super...
    Und warum sollte ich structs wie D3DMATERIAL9 einbinden / mitkompilieren, wenn ich eh nur auf viel älteren Kram zugreife!?

    WIN32_LEAN_AND_MEAN halt.

    Zu meinem eigentlichen Problem: Bevor hier die ersten Antworten eintrudelten, hab' ich mir dermaßen meinen Code zu Tode ver(schlimm)bessert, dat ich mir überlegt hab', den grundlegenden Kram nochmal aufzuzieh'n. Bei einem Kumpel war's scheinbar'n Treiberproblem (Schande) - aber ich denke kaum, daß das überall der Fall war. Werd' aber bald wieder soweit sein und euch dann mit weiteren Fragen nerven... :p
    Auf jeden Fall danke.

    MfG, Sarge

    P.S.:

    [quote]Original erstellt von <Sgt. Nukem>:
    Und was sollte ich bitte dann als Parameter übergeben!? 220?

    42 oder die Ausgabe von 'std::cout << "D3D_SDK_VERSION";', je nach Lust und Laune.[/quote]
    In d3d8.h steht #define D3D_SDK_VERSION 220 - was soll das mit "42"??



  • Tja. 42 ist DIE Antwort schlechthin. 😃 Hat ja auch lange gedauert, das rauszufinden.... 😃

    Gruß - Xaron



  • Hähäh... 😃

    Is' "42" etwa 1337 talk??
    Steht also für "AZ" - mhhh... Abkürzung für Arizona...

    Was man da wieder draus lesen könnte weiß ich jetzt aber nicht...

    Bin mit meinem Latein (1337 talk) am Ende...



  • nein, 42 ist nicht 1337!

    Lies mal das Buch "Per Anhalter Durch die Galaxis"



  • Ach, Hitchhiker's Guide... richtig!! 😃 😮 😃


Anmelden zum Antworten