Программирование игр, создание игрового движка, OpenGL, DirectX, физика, форум
GameDev.ru / Программирование / Форум / Поясните за SwapChain D3D11

Поясните за SwapChain D3D11

IBetsПользовательwww11 июня 201821:35#0
Есть вот такой код. Очень странное поведение дайвера. То все работает прекрасно, то swapChain->Present(0, 0) выдает ошибку и соответственно черный экран
    auto pSwapChain = ComPtr<IDXGISwapChain1>{};
    auto swapChainDesc = DXGI_SWAP_CHAIN_DESC1{};
    swapChainDesc.BufferUsage = DXGI_USAGE_RENDER_TARGET_OUTPUT;
    swapChainDesc.Format = DXGI_FORMAT_R8G8B8A8_UNORM;
    swapChainDesc.BufferCount = countBuffer;
  //  swapChainDesc.Flags = DXGI_SWAP_CHAIN_FLAG_ALLOW_MODE_SWITCH;
    swapChainDesc.SwapEffect = DXGI_SWAP_EFFECT_FLIP_DISCARD;
    swapChainDesc.SampleDesc = { 1, 0 };

    auto swapChainFullScreenDesc = DXGI_SWAP_CHAIN_FULLSCREEN_DESC{};
    swapChainFullScreenDesc.RefreshRate = window.IsVSync() ? DXGI_RATIONAL { numerator, denominator } :  DXGI_RATIONAL{ 0, 1 };
    swapChainFullScreenDesc.Windowed = !window.IsFullScreen();
    swapChainFullScreenDesc.ScanlineOrdering = DXGI_MODE_SCANLINE_ORDER_UNSPECIFIED;
    swapChainFullScreenDesc.Scaling = DXGI_MODE_SCALING_UNSPECIFIED;
    

    DX::ThrowIfFailed(m_ComObject->CreateSwapChainForHwnd(device, window.GetHwnd(), &swapChainDesc, &swapChainFullScreenDesc, output, &pSwapChain));
    DX::ThrowIfFailed(m_ComObject->MakeWindowAssociation(window.GetHwnd(), DXGI_MWA_NO_ALT_ENTER));
    return SwapChain{ pSwapChain };

MrShoorУчастникwww11 июня 201821:43#1
IBets
> то swapChain->Present(0, 0) выдает ошибку
Какую ошибку?
IBetsПользовательwww11 июня 201821:52#2
MrShoor
0x887a0006

Правка: 11 июня 2018 21:52

innuendoПостоялецwww11 июня 201822:06#3
IBets
0xDEADCODE ?
IBetsПользовательwww11 июня 201822:10#4
innuendo
0x887a0006
DelfigamerПостоялецwww11 июня 201823:11#5
Изображение

Видимо, ещё не все UB отловил. c:

Правка: 11 июня 2018 23:11

IBetsПользовательwww11 июня 201823:41#6
Delfigamer
Да уж похоже я покину лигу C++ и  отправлюсь в -> pure C

Правка: 11 июня 2018 23:42

MrShoorУчастникwww12 июня 20180:02#7
IBets
> 0x887a0006
Это DXGI_ERROR_DEVICE_HUNG
Что означает, что ошибка в другом месте, а не в Present. Ищи и чини.

/ Форум / Программирование игр / Графика

2001—2018 © GameDev.ru — Разработка игр