1

当我尝试使用 Rastertek DirectX 11 教程之一时会出现问题。

  • 我将其更改为const bool fullscreen valuefalse以便程序在窗口模式下运行
  • 我将窗口样式从更改CLIPPINGWINDOWOVERLAPPEDWINDOW

它工作正常,只是程序在窗口被销毁时抛出异常:

Unhandled exception at 0x779715ee in FrustumCulling.exe: 0xC0000005: Access violation reading location 0xfeeeff5e.

这是http://www.rastertek.com/dx11tut16.html上的教程 16

我所做的唯一修改是:

图形类.h

const bool FULL_SCREEN = true //false;

SystemClass::InitializeWindows
{

...

m_hwnd = CreateWindowEx(WS_EX_APPWINDOW, m_applicationName, m_applicationName, 
            WS_OVERLAPPEDWINDOW,
            posX, posY, screenWidth, screenHeight, NULL, NULL, m_hinstance, NULL);

...

}
4

1 回答 1

1

您是否可能仍在全屏模式下设置交换链?当我遇到这个问题时,将它添加到我的 DxClass 的析构函数中解决了它

if(_swapChain != nullptr)
{
            _swapChain->SetFullscreenState(false, NULL);  
            _swapChain->Release();
            _swapChain = nullptr;
}

根据其中一篇教程中的 Rastertek 评论之一,交换链必须在发布之前将全屏设置为 false。

当您设置您的DXGI_SWAP_CHAIN_DESC保证时,您使用的是swapChainDesc.Windowed = !FULL_SCREEN而不是文字 bool 值,并确保您将 FULL_SCREEN 设置为 false,FULL_SCREEN = true //false;不会这样做并且不应该编译。

于 2013-03-27T11:36:20.147 回答