Gleiche Divisionen liefern verschiedene Werte



  • Hallo,

    ich weiß leider nicht genau, in welches Forum damit, aber vielleicht ist es hier ja richtig 😉

    Ich benutze in meiner Anwendung eine DLL mit C-Funktionen, außerdem ein Direct3D-Device.

    Nach rumprobieren und Fehler finden habe ich folgendes bemerkt: Wenn ich das 3D-Device aus habe, läuft die DLL einwandfrei. Nachdem aber einmal ein 3D-Device angemacht worden ist, liefern alle Divisionen ab der 8. Stelle nach dem Komma in der DLL andere Werte! Da genau diese Stellen wichtig sind, muss ich den Fehler unbedingt finden, aber ich weiß gar nicht, woran das liegen könnte...

    Vielleicht habe ich Glück und einer weiß Bescheid 😉

    viele grüße,
    bjoern

    PS: Tatsächlich, wenn ich das Device nicht initialisiere, tritt der Fehler nicht auf. Der Fehler tritt erst nach folgender Zeile auf:

    hr = m_pD3D->CreateDevice( D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, m_hWnd,
    									D3DCREATE_SOFTWARE_VERTEXPROCESSING,
    									&m_d3dpp, &m_pD3DDevice );
    


  • versuch mal probeweise ein

    __asm 
    {
      emms
    }
    

    vor die divisionen zu tippen. Führt of zu den komischten fehler wenn noch MMX müll in der FPU rumliegt (womöglich hats ja irgendwo ein vergessen, was ich mir aber sehr schlecht vorstellen kann, dann das wäre mit sichheit schon anderen leuten aufgefallen.. 🤡 )



  • Nein, funktioniert leider nicht, aber trotzdem danke 😞

    Bin auch völlig verzweifelt, da ich noch nicht mal den Fehler suchen kann...

    viele grüße,
    bjoern



  • Ich würd mal das DirectX SDK zu rate ziehen 😋
    bei mir klappts nämlich



  • GOTTSEIDANK, ich habe den Fehler gefunden.

    Direct3D schaltet die FPU in einen float "Sparmodus", den kann man aber mit D3DCREATE_FPU_PRESERVE verhindern.

    Jetzt bin ich wieder glücklich 😉


Anmelden zum Antworten