Я пытаюсь настроить рисование с помощью Direct2D v1.3, но постоянно сталкиваюсь с ошибкой исключения, и это не работает. Возможно, я что-то делаю неправильно?
Моя среда разработки — Windows 11 и C++.
При выполнении функции CreateBitmapFromDxgiSurface возникает ошибка исключения.Ниже приведена упрощенная версия моего кода:
ID2D1Factory1* d2_factory = nullptr;
ID2D1Device* d2_device = nullptr;
ID3D11Device* d3_device = nullptr;
IDXGIFactory2* dxg_factory = nullptr;
IDXGIDevice1* dxg_device = nullptr;
IDXGISurface* dxg_surface = nullptr;
IDXGISwapChain1* swap_chain = nullptr;
ID2D1Bitmap1* bitmap = nullptr;
HRESULT hr;
hr = ::D3D11CreateDevice(
nullptr,
D3D_DRIVER_TYPE_HARDWARE,
0,
D3D11_CREATE_DEVICE_BGRA_SUPPORT,
nullptr,
0,
D3D11_SDK_VERSION,
&d3_device,
nullptr,
nullptr
);
hr = d3_device->QueryInterface(__uuidof(IDXGIDevice1), (void**)(&dxg_device));
dxg_device->SetMaximumFrameLatency(1);
hr = D2D1CreateFactory(D2D1_FACTORY_TYPE_SINGLE_THREADED, &d2_factory);
hr = d2_factory->CreateDevice(dxg_device, &d2_device);
hr = ::CreateDXGIFactory2(DXGI_CREATE_FACTORY_DEBUG, __uuidof(IDXGIFactory2), (void**)(&dxg_factory));
ID2D1DeviceContext4* dc = nullptr;
hr = d2_device->CreateDeviceContext(D2D1_DEVICE_CONTEXT_OPTIONS_NONE, reinterpret_cast(&dc));
DXGI_SWAP_CHAIN_DESC1 desc = {};
desc.Width = 0;
desc.Height = 0;
desc.Format = DXGI_FORMAT_B8G8R8A8_UNORM;
desc.Stereo = false;
desc.SampleDesc.Count = 1;
desc.SampleDesc.Quality = 0;
desc.BufferUsage = DXGI_USAGE_RENDER_TARGET_OUTPUT;
desc.BufferCount = 2;
desc.Scaling = DXGI_SCALING_NONE;
desc.SwapEffect = DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL;
desc.AlphaMode = DXGI_ALPHA_MODE_UNSPECIFIED;
desc.Flags = 0;
hr = dxg_factory->CreateSwapChainForHwnd(dxg_device, _hwnd, &desc, nullptr, nullptr, &swap_chain);
hr = swap_chain->GetBuffer(0, __uuidof(IDXGISurface), (void**)(&dxg_surface));
D2D1_BITMAP_PROPERTIES1 prop = D2D1::BitmapProperties1(
D2D1_BITMAP_OPTIONS_TARGET | D2D1_BITMAP_OPTIONS_CANNOT_DRAW,
D2D1::PixelFormat(DXGI_FORMAT_B8G8R8A8_UNORM, D2D1_ALPHA_MODE_PREMULTIPLIED)
);
// ### Exception Error
hr = dc->CreateBitmapFromDxgiSurface(dxg_surface, &prop, &bitmap);
dc->SetTarget(bitmap);
Подробнее здесь: https://stackoverflow.com/questions/787 ... n-direct2d
Создание ID2D1DeviceContext в Direct2D ⇐ C++
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Как создать наложение, невидимое на скриншоте, с помощью DirectComposition и Direct2D в C++?
Anonymous » » в форуме C++ - 0 Ответы
- 37 Просмотры
-
Последнее сообщение Anonymous
-