Direct3D 11 с наложением DirectDraw (2D)

По сути, я хочу сделать 2D-рисунок на 3D-цепочке обмена. Но мой код внедряется в другую программу, исходного кода у меня нет.

Я могу сделать свой рисунок, но он работает только тогда, когда цепочка обмена создается в формате DXGI_FORMAT_B8G8R8A8_UNORM (BGR).

Первоначально программа использует DXGI_FORMAT_R8G8B8A8_UNORM (RGB), и когда я переключаю ее на BGR, программа рендерит вне окна/экрана. Почти все крупнее.

Есть ли способ взаимодействия Direct3D 11 с 2D с использованием RGB или способ корректной работы рендеринга приложения с BGR?


person Adriano dos Santos Fernandes    schedule 06.01.2013    source источник
comment
Мой код для рисования 2D в 3D swapchain основан на этом примере: gamedev .net/topic/552795-solved-d3d11-and-direct2d   -  person Adriano dos Santos Fernandes    schedule 07.01.2013


Ответы (1)


Если цепочка обмена создается в формате DXGI_FORMAT_R8G8B8A8_UNORM, вам просто нужно убедиться, что свойства растрового изображения Direct2D, которые вы передаете методу CreateBitmapFromDxgiSurface цели рендеринга, также указывают тот же формат пикселей DXGI_FORMAT_R8G8B8A8_UNORM.

person Kenny Kerr    schedule 17.01.2013
comment
Но, согласно указанному мной URL-адресу и моим тестам, для совместимости с Direct2D требуется D3D11_CREATE_DEVICE_BGRA_SUPPORT. - person Adriano dos Santos Fernandes; 23.02.2013
comment
Да, этот флаг обязателен, но это не означает, что формат цепочки подкачки должен быть BGRA. Я понимаю, что это немного сбивает с толку, но Direct2D поддерживает не только пиксельные форматы BGRA. - person Kenny Kerr; 08.03.2013
comment
CreateBitmapFromDxgiSurface кажется API Windows 8. Мне нужен Vista/Win7 API. - person Adriano dos Santos Fernandes; 22.04.2013
comment
Он поддерживается в Windows 7 с обновлением платформы DirectX. - person Kenny Kerr; 11.11.2013