Grafikausgabe im Fenster



  • Hi,

    ich bin zur Zeit in Australien (Praktikum) und muss ein Analysetool erstellen. Es war schon ein Akt, ueberhaupt einen PC zu bekommen, doch jetzt zweifle ich an dessen 3D-Kapazitaeten.

    Ich beginne fast erst mit Direct3D (die Grundlagen kenne ich aber), weiss also, welche Sachen laufen muessen.

    Jetzt zu meinem Problem: Beim Ausfuehren des einfachsten Beispiels der Doku (Vertices, also das Dreieck malen) versagt mein PC mit dem Hinweis "BackbufferFormat invalid". Habe mit dem Analysetool herausgefunden, dass mein PC nur das Format D3DFMT_R5G6B5 kennt. Also Unknown in D3DFMT_R5G6B5 geaendert, es laeuft dennoch nicht im kleinen Fenster.

    Allerdings laufen andere Beispiele im FullScreen, jedoch nicht im kleinen Fenster, wie ich es aber benoetige.

    Jetzt endlich zu meiner Frage 😃 Ist es ueberhaupt moeglich, dass mein Grafikadapter die Darstellung von Direct3D nur im FullScreen unterstuetzt?

    viele gruesse,
    bjoern

    PS: Grafikcontroller: Intel(r) 82815 Graphics Controller



  • Es ist möglich das der Adapter die Direct3D-Ausgabe im Fenster nicht unterstützt.



  • Gibt es eine Möglichkeit, wie ich das herausfinden kann?



  • 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