c++ - DirectX 程序在窗口模式下销毁时抛出异常

标签 c++ directx directx-11

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

  • 我将 const bool fullscreen value 更改为 false 因此程序在窗口模式下运行
  • 我将窗口样式从 CLIPPINGWINDOW 更改为 OVERLAPPEDWINDOW

它工作正常,除了当窗口被销毁时程序抛出异常:

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

教程 16 http://www.rastertek.com/dx11tut16.html

我所做的唯一修改是:

graphicsclass.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);

...

}

最佳答案

您是否仍在全屏模式下设置交换链? 当我遇到这个问题时,将它添加到我的 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; 不会那样做,也不应该编译。

关于c++ - DirectX 程序在窗口模式下销毁时抛出异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15654969/

相关文章:

c++ - 制作模型加载器 : What to do after reading the vertices and texture?

wpf - 使用 DirectX 11 在 WPF 控件上渲染

c++ - IDXGISwapChain::Present 导致驱动程序崩溃和设备移除

c++ - DirectShow DVD 播放

c++ - DirectX 9 顶点球体

c++ - 具有透明缓冲区的 DirectX11 ClearRenderTargetViewback?

c++ - 将我的数组移动到 Mat 并使用 openCV 显示图像

c++ - 做关于兔子群的练习,撞墙了

c++ - ostringstream 到 vector<uint8_t>

C++:二维数组,如何找到列中差异最大的行?