2013-01-06 42 views
0

基本上,我想要做3D交換鏈上的2D繪圖。但是我的代碼注入另一個程序,我沒有源代碼。Direct3D 11與DirectDraw(2D)覆蓋

我可以做我的繪圖,但只有在使用DXGI_FORMAT_B8G8R8A8_UNORM(BGR)格式創建交換鏈時才起作用。

當然,程序使用DXGI_FORMAT_R8G8B8A8_UNORM(RGB),當我切換到BGR時,程序在窗口/屏幕上越來越近。幾乎所有東西都比較大。

是否有一種方法可以使用RGB與2D進行Direct3D 11互操作或者使應用程序渲染與BGR正確匹配?

+0

我在2D交換鏈上繪製2D的代碼基於此示例:http://www.gamedev.net/topic/552795-solved-d3d11-and-direct2d/ –

回答

0

如果交換鏈與DXGI_FORMAT_R8G8B8A8_UNORM格式創建的,那麼你只需要確保你傳遞給渲染目標的CreateBitmapFromDxgiSurface方法的Direct2D位圖屬性也指定了相同的DXGI_FORMAT_R8G8B8A8_UNORM像素格式。

+0

但是,相應地,我說的URL和測試,Direct2D互操作性需要D3D11_CREATE_DEVICE_BGRA_SUPPORT。 –

+0

是的,這個標誌是必需的,但並不意味着交換鏈格式需要是BGRA。我意識到這有點令人困惑,但Direct2D支持的不僅僅是BGRA像素格式。 –

+0

CreateBitmapFromDxgiSurface似乎是Windows 8 API。我想要一個Vista/Win7 API。 –