2015-12-28 4 views
-1

Je veux juste connaître l'API Directx 12 pour créer une texture à partir d'une image.Création d'une texture à partir d'une image dans DX 12 VC++

Pour DX11 c'est D3DX11CreateShaderResourceViewFromFile et pour DX9 c'est D3DXCreateTextureFromFileEx et pour DX12?

+1

La question est la même que http://stackoverflow.com/questions/34492720/c-directx-12-how-to-create-a-texture-from-a-bitmap-file – J3soon

+0

D3Dx9, D3DX10, et D3DX11 sont des utilitaires de support, pas des parties centrales de Direct3D, et dans tous les cas sont déconseillés par [MSDN] (https://msdn.microsoft.com/en-us/library/ee663275.aspx). [Kit d'outils DirectX] (https://github.com/Microsoft/DirectXTK) dispose d'un chargeur de texture d'image DDS et WIC pour DirectX 11. La prise en charge de DirectX 12 est en cours. Cela dit, pourquoi utilisez-vous DirectX 12 au lieu de DirectX 11 pour votre projet? –

Répondre

3

Les choses sont un peu mieux maintenant. Microsoft a réécrit leur DDSTextureLoader pour DX12 et a libéré dans le cadre de leur MiniEngine sur GitHub https://github.com/Microsoft/DirectX-Graphics-Samples/blob/master/MiniEngine/Core/DDSTextureLoader.cpp

Vous pouvez également jeter un oeil à mon travail dérivé qui est destiné à faire usage de la DDSTextureLoader un peu plus facile à l'extérieur de MiniEngine. J'utilise ce chargeur pour tous mes fichiers de texture. https://github.com/ClemensX/ShadedPath12/blob/master/ShadedPath12/ShadedPath12/DDSTextureLoader.cpp

Il analyse assez bien le format de fichier DDS (DirectDrawSurface), y compris les mipmaps.

1

Il n'y en a pas.

Direct3D 12 est une API de bas niveau. A très API de bas niveau. Il n'a pas de fonctions de confort qui créent des textures de tissu entier à partir d'un nom de fichier. Si vous voulez créer une texture, vous devez travailler pour cela. Vous devez charger le fichier, trouver le format dans lequel vous le voulez, allouer de la mémoire en demandant au système la quantité de mémoire nécessaire, puis effectuer une série complexe d'étapes pour transférer l'image chargée dans cette mémoire.

1

L '«en-tête de l'utilitaire» officiel pour Direct3D 12 est d3dx12.h. C'est un en-tête incorporé et n'a pas de DLL ou de bibliothèque statique, donc la fonctionnalité fournie est limitée aux vrais helpers. Il n'a pas d'équivalent à D3DX11CreateShaderResourceViewFromFile. Il n'est pas inclus dans le SDK Windows, mais est fourni sous la licence MIT et vous devez juste le copier dans votre projet - il est inclus dans les différents modèles DirectX 12 Visual Studio, y compris mon Direct3D Game templates.

Vous pouvez utiliser les DDSTextureLoader et WICTextureLoader modules fournis dans le DirectX Tool Kit for DirectX 12 pour une texture prêt à utiliser pour chargeur Direct3D 12. Voir this tutorial lesson.

Il convient de noter que D3Dx9, D3DX10 et D3DX11 sont tous dépréciée et disponibles uniquement dans le cadre du SDK de DirectX hérité par MSDN. En d'autres termes, vous ne devriez pas utiliser D3DX11CreateShaderResourceViewFromFile pour votre code Direct3D 11. Voir this blog post pour une liste complète des remplacements D3DX9/10/11. TL; DR: utilisent DDSTextureLoader et WICTextureLoader dans DirectX Tool Kit for DirectX 11.