Problem mit D3DPRESENT_PARAMETERS oder Vollbild vs. Windowed Mode :D



  • Also ich habe wie man dem Topic schon entnehmen kann ein problem mit D3DPRESENT_PARAMETERS. undzwar folgendes. Ich erstelle mir Direct3D

    if( !( CSF_D3D = Direct3DCreate9( D3D_SDK_VERSION ) ) )  return false;
    

    danach lege ich die D3DPRESENT_PARAMETERS fest:

    D3DPRESENT_PARAMETERS d3dpp; 
        ZeroMemory( &d3dpp, sizeof(d3dpp) );
    	d3dpp.hDeviceWindow = hWnd;
        d3dpp.Windowed = windowed;
        d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD;
    	d3dpp.BackBufferCount = 1;
    	d3dpp.BackBufferFormat = D3DFMT_A8R8G8B8;
    	d3dpp.BackBufferWidth = scrWidth;
    	d3dpp.BackBufferHeight = scrHeight;
    

    so das problem is folgendes: Im Vollbildmodus gehts wunderbar sobald ich aber windowed = true setz schlägt die intialsierung sprich das erstellen des D3DDevice fehl. Liegt das an den möglicherweise falschen D3DPRESENT_PARAMETERS 🙄 order woanders dran?

    mfg



  • Nicht jede Grafikkarte unterstützt im fenstermodus alle formate die sie auch im Vollbildmodus unterstützt. Auch ist es schlecht, im fenstermodus ein 16bit format zu nutzen wenn der desktop 32bit nutzt und umgekehrt, da nich alle Grafikkarten die nötige konvertierung beherrschen.

    Ähnliches gilt auch für den Z-Buffer oder das multisampling.


  • Mod

    vielleicht D3DSWAPEFFECT_COPY



  • hm ok dann werd ich wohl mal ein bischen mit den D3DFORMATs rumprobieren müssen.
    aber schonma danke für die hilfe 🙂



  • Wenn du Direct3D in der Systemsteuerung auf Debug stellst und dein Programm mit dem Debugger laufen lässt, siehst du in der Debug-Ausgabe sehr viele Infos von Direct3D - darunter höchstwahrscheinlich auch den Grund, warum dein Aufruf nicht geklappt hat.



  • http://directtutorial.com/DX9/dx9.php

    Mach die Tutorials, da steht alles schön drin. Fang am besten vorne an.



  • @xindon: danke 🙂 werd ich machen.

    @TomasRiker: wo kann man das umstellen? ich find in da nirgends direct x 😞



  • Falls du das Microsoft DirectX SDK installiert hast, wovon ich ausgehe, dann sollte sich in der Systemsteuerung ein Button befinden, der DirectX heist. Dort kannst du die Debug Level von Direct3D, DirectInput und DirectSound anpassen, oder ggf. abschalten.


Anmelden zum Antworten