Grafikausgabe im Fenster



  • Mal DXCaps probiert?

    Bye, TGGC (Der Held bei Dir!)



  • Ja, darin gibt es zumindest einen Window-Mode, der erwähnt wird. Allerdings kann ich den nicht aktivieren - das CreateDevice klappt schon nicht und ich denke, das liegt an den vielen Parametern (E_FAIL kommt raus). Dummerweise hab ich natürlich nicht genug Erfahrung und Wissen, als dass ich da jetzt viel rumprobieren könnte (obwohl ich natürlich immer dazu lerne 😉

    Gibts ein Util oder sogar einen SourceCode, der mir den Modus raussucht, der windowed funktioniert? Mit allen Parametern für D3DFORMAT und CreateDevice (ein Wunderprogramm also)? Oder wie kann ich diese mit DXCaps ermitteln?

    Anders ausgedrückt: Das Tutorial-File (habs leider nicht zur Hand, aber es müsste ja jeder haben) sucht automatisch einen Modus aus, der geeignet ist. Kann ich es dazu zwingen, einen Modus zu suchen, der windowed läuft? Es gibt dort ein Beispiel (MFCFog), das ein D3D Fenster in einem Formular unterbringt. Wenn ich das starte, geht das D3D device direkt in den fullscreen, obwohl es normalerweise erst die mfc startet. Falls also dieses Skript schon nach einem window modus sucht und keinen findet, gibts wohl echt keinen für die GraKa...



  • Es kommt zunächst mal auf die Treiber an!

    Hast Du den aktuellen?

    http://support.intel.com/support/graphics/intel815/sb/CS-003951-prd797.htm

    http://support.intel.com/support/graphics/sb/CS-010486.htm

    Danach solltest Du Deine Caps mal auf www.fheinemann.de/caps eintragen! 😉

    P.S.: Warum ist oben am Link der MS-Seite ein Kreuz?? 🕶 😉

    EDIT: Naja, http://support.intel.com/support/graphics/sb/CS-010468.htm - alles auch nur halbwegs aktuelle läuft auf der Möhre jedenfalls nicht. 🕶


  • Mod

    sag ma welche graka hast du denn drinnen?

    wenn du genauere informationen zu fehlermeldungen möchtest, dann solltest du Direct3D in den Debug mode stellen und im Debugoutput schauen was der genau anmeckert.

    aber genau deine probleme sind diese welche leute zu openGL führen, dort sagt man nur was man sich als 3ddevice wünscht und oGL gibt einem das beste raus das gemacht werden kann. wieso nur hat d3d sowas nicht?

    rapso->greets();



  • Also, mit meinen Fähigkeiten habe ich leider keinen Fehleroutput rausfinden können (nur halt dass die Variable E_FAIL auch E_FAIL enthält). Fakt ist, dass das CreateDevice nicht funktioniert.

    HRESULT InitD3D( HWND hWnd )
    {
        // Create the D3D object.
        if( NULL == ( g_pD3D = Direct3DCreate9( D3D_SDK_VERSION ) ) )
            return E_FAIL;
    
        // Set up the structure used to create the D3DDevice
        D3DPRESENT_PARAMETERS d3dpp;
        ZeroMemory( &d3dpp, sizeof(d3dpp) );
        d3dpp.Windowed = TRUE;
        d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD;
        d3dpp.BackBufferFormat = D3DFMT_UNKNOWN;
    
        // Create the D3DDevice
        if( FAILED( g_pD3D->CreateDevice( D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hWnd,
                                          D3DCREATE_SOFTWARE_VERTEXPROCESSING,
                                          &d3dpp, &g_pd3dDevice ) ) )
        {
            return E_FAIL;
        }
    
        // Device state would normally be set here
    
        return S_OK;
    }
    

    Wenn also der Code nicht funzt (Tutorial D3D #2), kann ich dann davon ausgehen, dass die Grafikkarte keinen Fenster-Mode unterstützt? Das ist die letzte Frage, dann stör ich nicht mehr 😉 Darauf wollte ich ja die ganze Zeit hinaus.

    Übrigens danke für all die Antworten!



  • sofern Geschwindigkiet keine Rolle spielt, kannst du ja den Softwarerenderer nehmen(sehr, sehr langsam, aber einfach alles wird unterstützt 😃 )

    Also statt D3DDEVTYPE_HAL D3DDEVTYPE_REF



  • So, ich habe dann mal auch D3DDEVTYPE_HAL in D3DDEVTYPE_REF umgewandelt; klappt auch nicht. Mitterweile weiss ich, dass CreateDevice D3DERR_NOTAVAILABLE zurueckgibt.

    Jetzt meine Vermutung: Unter

    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/directx9_c/directx/graphics/reference/d3d/structures/d3dpresent_parameters.asp

    habe ich gelesen (BackBufferFormat), dass man mit der Angabe von D3DFMT_UNKNOWN als BackBufferFormat automatisch dasselbe D3DFormat waehlt, das der Bildschirm momentan hat. Da die Anwendung ja im Fenstermodus laeuft und mein Monitor alle 16.7 Mill. Farben anzeigt (R8G8B8), versucht das CreateDevice auch dieses BackBufferFormat zu nehmen.

    DirectX Caps entnehme ich, dass meine Graka das aber nicht kann (nur R5G6B5 im Windowed Mode). Der Microsoft-Quelle kann man auch entnehmen, dass das auch kein Problem sein sollte, da es jetzt das Color-Converting gibt. Es sollte also moeglich sein, mein Fenster im von der Graka benotigen R5G6B5 Modus laufen zu lassen, auch wenn der Desktop R8G8B8 anzeigt. Dummerweise aber nur, "if the hardware supports color conversion".

    Jetzt suche ich nach einer Moeglichkeit, herauszufinden, ob meine Graka wenigstens Color Conversion kann. Ich geh mal davon aus, dass das nicht der Fall ist.

    Na, wie findet ihr meine Theorie? 😃 😉



  • Macht Sinn. Verstell doch einfach mal den Desktop.

    Bye, TGGC (Der Held bei Dir!)



  • Das ich da nicht selbst drauf gekommen bin 😉

    KLAPPT! Danke nochmal an alle.



  • LOL 😃 👍


Anmelden zum Antworten