2013-01-06 3 views
0

Fondamentalement, je veux faire 2d dessin sur un swapchain 3d. Mais mon code injecte dans un autre programme, avec je n'ai pas le code source.Direct3D 11 avec superposition DirectDraw (2d)

Je peux faire mon dessin, mais cela ne fonctionne que lorsque la swapchain est créée avec le format DXGI_FORMAT_B8G8R8A8_UNORM (BGR). A l'origine, le programme utilise DXGI_FORMAT_R8G8B8A8_UNORM (RGB), et lorsque je le commute sur BGR, le programme restaure la fenêtre/l'écran. Presque tout est plus grand.

Existe-t-il un moyen d'interopérer Direct3D 11 avec 2D en utilisant RGB ou un moyen de rendre le rendu de l'application correct avec BGR?

+0

Mon code pour dessiner 2d sur swapchain 3d est basé sur cet exemple: http://www.gamedev.net/topic/552795-solved-d3d11-and-direct2d/ –

Répondre

0

Si la chaîne d'échange est créé avec le format DXGI_FORMAT_R8G8B8A8_UNORM vous devez juste vous assurer que les propriétés bitmap Direct2D que vous passez à la méthode de CreateBitmapFromDxgiSurface de cible de rendu indique également le même format de pixel DXGI_FORMAT_R8G8B8A8_UNORM.

+0

Mais en fonction de l'URL que j'ai dit et mes tests , D3D11_CREATE_DEVICE_BGRA_SUPPORT est requis pour l'interopérabilité Direct2D. –

+0

Oui, ce drapeau est obligatoire, mais cela ne signifie pas que le format de la chaîne d'échange doit être BGRA. Je réalise que c'est un peu déroutant mais Direct2D supporte plus que les formats de pixels BGRA. –

+0

CreateBitmapFromDxgiSurface semble être l'API Windows 8. Je voudrais une API Vista/Win7. –

Questions connexes