2013-01-06 90 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。 –