【问题标题】:Creating full screen DirectX device causes D3DERR_INVALIDCALL创建全屏 DirectX 设备会导致 D3DERR_INVALIDCALL
【发布时间】:2010-11-02 04:37:26
【问题描述】:

我正在尝试以全屏模式创建 DirectX 设备(直到此时我一直被窗口化),但无法创建设备并且我收到无效呼叫 HR 失败。

这是我的代码:

    md3dPP.BackBufferWidth            = 1280; 
md3dPP.BackBufferHeight           = 720;
md3dPP.BackBufferFormat           = D3DFMT_UNKNOWN;
md3dPP.BackBufferCount            = 1;
md3dPP.MultiSampleType            = D3DMULTISAMPLE_NONE;
md3dPP.MultiSampleQuality         = 0;
md3dPP.SwapEffect                 = D3DSWAPEFFECT_DISCARD; 
md3dPP.hDeviceWindow              = mhMainWnd;
md3dPP.Windowed                   = false;
md3dPP.EnableAutoDepthStencil     = true; 
md3dPP.AutoDepthStencilFormat     = D3DFMT_D24S8;
md3dPP.Flags                      = 0;
md3dPP.FullScreen_RefreshRateInHz = D3DPRESENT_RATE_DEFAULT;
md3dPP.PresentationInterval       = D3DPRESENT_INTERVAL_IMMEDIATE;


HR(md3dObject->CreateDevice(
    D3DADAPTER_DEFAULT, // primary adapter
    mDevType,           // device type
    mhMainWnd,          // window associated with device
    devBehaviorFlags,   // vertex processing
    &md3dPP,            // present parameters
    &m_pd3dDevice));    // return created device

注意'md3dPP.Windowed = false;',如果这是真的,设备会在窗口模式下创建。

我的印象是我的一些默认值有误,但不知道该去哪里找。有没有办法获得更详细的报告,说明为什么设备创建在 D3DERR_INVALIDCALL 之后失败?

【问题讨论】:

    标签: graphics directx fullscreen device


    【解决方案1】:

    您需要为 BackBufferFormat 指定不同的值,因为只有窗口应用程序才允许使用值 D3DFMT_UNKNOWN。选择一个你的设备支持的(你可以使用CheckDeviceFormat()检查)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多