Over the past few years, I've been working on a number of projects in part motivated by the need to replace legacy D3DX functionality. As noted on MSDN, all versions of D3DX are deprecated and are not shipped with the Windows 8.x SDK. This includes D3DX9, D3DX10, and D3DX11. There are plenty of options for moving existing code over to newer, more supportable solutions most of which are now shared-source.
I've built a number of porting notes tables for each of these topics, and then realized today I don't have a single place to see it all. So here it is, the "D3DX porting mega-table" for Direct3D 11.
Direct3D 9: There are not many good replacements for the functionality in D3DX9 if you are still using Direct3D 9. You can make use of D3DCompile APIs directly with the legacy DirectX SDK, but newer versions of the D3DCompile DLL in the Windows 8.x SDK are not compatible with Windows XP for runtime use. You can use DirectXMath/XNAMath for Direct3D 9 instead of D3DXMath. The DDSWithoutD3DX sample supports Direct3D 9, and you can use DirectXTex and DirectXMesh when preparing content for use by Direct3D 9.
Direct3D 10: The best option for Direct3D 10.x applications is to update them to use Direct3D 11, and then utilize all the options here to replace legacy D3XD10. Porting the API is very straightforward, and Direct3D 11 is available on all supported platforms that have Direct3D 10.
Direct3D 12: There is a header that ships in the DirectX 12 samples on GitHub called d3dx12.h
. It is all inline utility header which has no DLL or redistributable dependency, and can be used under the MIT license. It is not included in the Windows SDK. If you are looking for additional functionality, see the DirectX Tool Kit for DirectX 12, DirectXTex and DirectXMesh.
Related: Where is the DirectX SDK?, Where is the DirectX SDK (2013 Edition)?, Where is the DirectX SDK (2015 Edition)?, DirectX SDKs of a certain age, DXUT for Win32 Desktop Update, DirectX SDK Samples Catalog, DirectX SDK Tools Catalog
CodePlex: All CodePlex links below will redirect to the Microsoft organizational section of GitHub as CodePlex has been shutdown.
General Helpers
The DirectX Tool Kit provides a number of helpers that are designed to simplify Direct3D 11 programming in the tradition of the original D3DX library. You can find the library on CodePlex and GitHub.
ID3DX10Sprite |
SpriteBatch |
ID3DX10Font |
SpriteFont, SpriteBatch |
ID3DX10Mesh |
Model, ModelMesh, ModelMeshPart |
D3DXCreateBox |
GeometricPrimitive |
D3DX11CreateShaderResourceViewFromFile |
CreateXXXTextureFromFile |
D3DX11CreateShaderResourceViewFromResource |
CreateXXXTextureFromMemory |
D3DX11CreateTextureFromFile |
CreateXXXTextureFromFile |
D3DX11CreateTextureFromResource |
CreateXXXTextureFromMemory |
D3DX11SaveTextureToFile |
SaveXXXTextureToFile |
The DXERR library is another helper that shipped in the legacy DirectX SDK. In Windows 8.x or later, you can just use FormatMessage
to use the built-in error descriptions which support DirectX. Otherwise, the best replacement is to compile your own version of DXERR.
DXGetErrorString |
See Where’s DXERR.LIB? |
HLSL Functions
The HLSL compiler, shader reflection API, and related functionality has been broken out into it's own D3DCompile DLL for some time. D3DCompile is in the Windows 8.x SDK and is included with VS 2012 and VS 2013 Preview.
D3DXCompileShaderFromFile |
D3DCompileFromFile |
D3DXCompileShader |
D3DCompile |
D3DXCompileShaderFromResource |
No direct equivalent. Can use resource APIs and then D3DCompile above. |
D3DXPreprocessShader |
D3DPreprocess |
D3DXDisassembleShader |
D3DDisassemble |
D3D10ReflectShader |
D3DReflect D3D11Reflect |
ID3DXBuffer |
ID3DBlob |
D3DXCreateBuffer |
D3DCreateBlob |
D3D10GetInputSignatureBlob |
D3DGetBlobPart |
Texture Functions
The DirectXTex library is primarily intended for texture processing offline with tools, although it can also be used at runtime for doing texture block compression, mipmap generation, or handling more general image processing needs. DirectXTK is intended for use at runtime with light-weight helpers and image loaders, but does not provide support for general runtime texture format conversion. You can find both libraries on CodePlex and GitHub.
D3DX11ComputeNormalMap |
DirectXTex library, ComputeNormalMap |
D3DX11CreateShaderResourceViewFromFile |
DDSTextureLoader: CreateDDSTextureFromFile WICTextureLoader: CreateWICTextureFromFile DirectXTex library (tools), LoadFromXXXFile then CreateShaderResourceView or CreateTexture |
D3DX11CreateShaderResourceViewFromMemory |
DDSTextureLoader: CreateDDSTextureFromMemory WICTextureLoader: CreateWICTextureFromMemory DirectXTex library (tools), LoadFromXXXMemory then CreateShaderResourceView or CreateTexture |
D3DX11CreateShaderResourceViewFromResource |
No direct equivalent, can use Win32 resource functions and then the ‘from memory’ APIs above. |
D3DX11FilterTexture |
DirectXTex library, GenerateMipMaps and GenerateMipMaps3D |
D3DX11GetImageInfoFromFile |
DirectXTex library, GetMetadataFromXXXFile |
D3DX11GetImageInfoFromMemory |
DirectXTex library, GetMetadataFromXXXMemory |
D3DX11GetImageInfoFromResource |
No direct equivalent, can use Win32 resource functions and then the ‘from memory’ APIs above. |
D3DX11LoadTextureFromTexture |
DirectXTex library, Resize , Convert , Compress , Decompress , and/or CopyRectangle |
D3DX11SaveTextureToFile |
ScreenGrab: SaveDDSTextureToFile or SaveWICTextureToFile
DirectXTex library, |
D3DX11SaveTextureToMemory |
DirectXTex library, CaptureTexture then SaveToXXXMemory |
Geometry Functions
The DirectXMesh library is intended for geometry processing offline with tools, although it can be used at runtime. You can find the library on CodePlex and GitHub.
D3DXCleanMesh |
Clean |
D3DXComputeNormals |
ComputeNormals |
D3DXComputeTangent |
ComputeTangentFrame |
ID3DX10Mesh::GenerateAdjacencyAndPointReps |
GenerateAdjacencyAndPointReps |
ID3DX10Mesh::GenerateGSAdjacency |
GenerateGSAdjacency |
ID3DX10Mesh::Optimize |
AttributeSort |
D3DXOptimizeFaces |
OptimizeFaces |
D3DXOptimizeVertices |
OptimizeVertices |
D3DXValidMesh |
Validate |
D3DXWeldVertices |
WeldVertices |
Math
The legacy D3DXMath library has been replaced by DirectXMath. The library is in the Windows 8.x SDK or later, as well as being available on GitHub. You may also want to take a look at the SimpleMath wrapper.
D3DXFLOAT16 |
HALF |
D3DXMATRIXA16 |
XMMATRIX or XMFLOAT4X4A |
D3DXMATRIX |
XMFLOAT4X4 |
D3DXQUATERNION
|
XMVECTOR is used rather than having unique types, so you will likely need to use an XMFLOAT4 |
D3DXVECTOR2 |
XMFLOAT2 |
D3DXVECTOR2_16F |
XMHALF2 |
D3DXVECTOR3 |
XMFLOAT3 |
D3DXVECTOR4 |
XMFLOAT4
(or if you can guarantee the data is 16-byte aligned, XMVECTOR or XMFLOAT4A ) |
D3DXVECTOR4_16F |
XMHALF4 |
D3DX_PI |
XM_PI |
D3DX_1BYPI |
XM_1DIVPI |
D3DXToRadian |
XMConvertToRadians |
D3DXToDegree |
XMConvertToDegrees |
D3DXBoxBoundProbe |
BoundingBox::Intersects(XMVECTOR, XMVECTOR, float&) |
D3DXComputeBoundingBox |
BoundingBox::CreateFromPoints |
D3DXComputeBoundingSphere |
BoundingSphere::CreateFromPoints |
D3DXSphereBoundProbe |
BoundingSphere::Intersects(XMVECTOR, XMVECTOR, float&) |
D3DXIntersectTriFunction |
TriangleTests::Intersects |
D3DXFloat32To16Array |
XMConvertFloatToHalfStream |
D3DXFloat16To32Array |
XMConvertHalfToFloatStream |
D3DXVec2Length |
XMVector2Length or XMVector2LengthEst |
D3DXVec2LengthSq |
XMVector2LengthSq |
D3DXVec2Dot |
XMVector2Dot |
D3DXVec2CCW |
XMVector2Cross |
D3DXVec2Add |
XMVectorAdd |
D3DXVec2Subtract |
XMVectorSubtract |
D3DXVec2Minimize |
XMVectorMin |
D3DXVec2Maximize |
XMVectorMax |
D3DXVec2Scale |
XMVectorScale |
D3DXVec2Lerp |
XMVectorLerp or XMVectorLerpV |
D3DXVec2Normalize |
XMVector2Normalize or XMVector2NormalizeEst |
D3DXVec2Hermite |
XMVectorHermite or XMVectorHermiteV |
D3DXVec2CatmullRom |
XMVectorCatmullRom or XMVectorCatmullRomV |
D3DXVec2BaryCentric |
XMVectorBaryCentric or XMVectorBaryCentricV |
D3DXVec2Transform |
XMVector2Transform |
D3DXVec2TransformCoord |
XMVector2TransformCoord |
D3DXVec2TransformNormal |
XMVector2TransformNormal |
D3DXVec2TransformArray |
XMVector2TransformStream |
D3DXVec2TransformCoordArray |
XMVector2TransformCoordStream |
D3DXVec2TransformNormalArray |
XMVector2TransformNormalStream |
D3DXVec3Length |
XMVector3Length or XMVector3LengthEst |
D3DXVec3LengthSq |
XMVector3LengthSq |
D3DXVec3Dot |
XMVector3Dot |
D3DXVec3Cross |
XMVector3Cross |
D3DXVec3Add |
XMVectorAdd |
D3DXVec3Subtract |
XMVectorSubtract |
D3DXVec3Minimize |
XMVectorMin |
D3DXVec3Maximize |
XMVectorMax |
D3DXVec3Scale |
XMVectorScale |
D3DXVec3Lerp |
XMVectorLerp or XMVectorLerpV |
D3DXVec3Normalize |
XMVector3Normalize or XMVector3NormalizeEst |
D3DXVec3Hermite |
XMVectorHermite or XMVectorHermiteV |
D3DXVec3CatmullRom |
XMVectorCatmullRom or XMVectorCatmullRomV |
D3DXVec3BaryCentric |
XMVectorBaryCentric or XMVectorBaryCentricV |
D3DXVec3Transform |
XMVector3Transform |
D3DXVec3TransformCoord |
XMVector3TransformCoord |
D3DXVec3TransformNormal |
XMVector3TransformNormal |
D3DXVec3TransformArray |
XMVector3TransformStream |
D3DXVec3TransformCoordArray |
XMVector3TransformCoordStream |
D3DXVec3TransformNormalArray |
XMVector3TransformNormalStream |
D3DXVec3Project |
XMVector3Project |
D3DXVec3Unproject |
XMVector3Unproject |
D3DXVec3ProjectArray |
XMVector3ProjectStream |
D3DXVec3UnprojectArray |
XMVector3UnprojectStream |
D3DXVec4Length |
XMVector4Length or XMVector4LengthEst |
D3DXVec4LengthSq |
XMVector4LengthSq |
D3DXVec4Dot |
XMVector4Dot |
D3DXVec4Add |
XMVectorAdd |
D3DXVec4Subtract |
XMVectorSubtract |
D3DXVec4Minimize |
XMVectorMin |
D3DXVec4Maximize |
XMVectorMax |
D3DXVec4Scale |
XMVectorScale |
D3DXVec4Lerp |
XMVectorLerp or XMVectorLerpV |
D3DXVec4Cross |
XMVector4Cross |
D3DXVec4Normalize |
XMVector4Normalize or XMVector4NormalizeEst |
D3DXVec4Hermite |
XMVectorHermite or XMVectorHermiteV |
D3DXVec4CatmullRom |
XMVectorCatmullRom or XMVectorCatmullRomV |
D3DXVec4BaryCentric |
XMVectorBaryCentric or XMVectorBaryCentricV |
D3DXVec4Transform |
XMVector4Transform |
D3DXVec4TransformArray |
XMVector4TransformStream |
D3DXMatrixIdentity |
XMMatrixIdentity |
D3DXMatrixDeterminant |
XMMatrixDeterminant |
D3DXMatrixDecompose |
XMMatrixDecompose |
D3DXMatrixTranspose |
XMMatrixTranspose |
D3DXMatrixMultiply |
XMMatrixMultiply |
D3DXMatrixMultiplyTranspose |
XMMatrixMultiplyTranspose |
D3DXMatrixInverse |
XMMatrixInverse |
D3DXMatrixScaling |
XMMatrixScaling |
D3DXMatrixTranslation |
XMMatrixTranslation |
D3DXMatrixRotationX |
XMMatrixRotationX |
D3DXMatrixRotationY |
XMMatrixRotationY |
D3DXMatrixRotationZ |
XMMatrixRotationZ |
D3DXMatrixRotationAxis |
XMMatrixRotationAxis |
D3DXMatrixRotationQuaternion |
XMMatrixRotationQuaternion |
D3DXMatrixRotationYawPitchRoll |
XMMatrixRotationRollPitchYaw (Note the order of parameters is different: D3DXMath takes yaw, pitch, roll, DirectXMath takes pitch, yaw, roll) |
D3DXMatrixTransformation |
XMMatrixTransformation |
D3DXMatrixTransformation2D |
XMMatrixTransformation2D |
D3DXMatrixAffineTransformation |
XMMatrixAffineTransformation |
D3DXMatrixAffineTransformation2D |
XMMatrixAffineTransformation2D |
D3DXMatrixLookAtRH |
XMMatrixLookAtRH |
D3DXMatrixLookAtLH |
XMMatrixLookAtLH |
D3DXMatrixPerspectiveRH |
XMMatrixPerspectiveRH |
D3DXMatrixPerspectiveLH |
XMMatrixPerspectiveLH |
D3DXMatrixPerspectiveFovRH |
XMMatrixPerspectiveFovRH |
D3DXMatrixPerspectiveFovLH |
XMMatrixPerspectiveFovLH |
D3DXMatrixPerspectiveOffCenterRH |
XMMatrixPerspectiveOffCenterRH |
D3DXMatrixPerspectiveOffCenterLH |
XMMatrixPerspectiveOffCenterLH |
D3DXMatrixOrthoRH |
XMMatrixOrthographicRH |
D3DXMatrixOrthoLH |
XMMatrixOrthographicLH |
D3DXMatrixOrthoOffCenterRH |
XMMatrixOrthographicOffCenterRH |
D3DXMatrixOrthoOffCenterLH |
XMMatrixOrthographicOffCenterLH |
D3DXMatrixShadow |
XMMatrixShadow |
D3DXMatrixReflect |
XMMatrixReflect |
D3DXQuaternionLength |
XMQuaternionLength |
D3DXQuaternionLengthSq |
XMQuaternionLengthSq |
D3DXQuaternionDot |
XMQuaternionDot |
D3DXQuaternionIdentity |
XMQuaternionIdentity |
D3DXQuaternionIsIdentity |
XMQuaternionIsIdentity |
D3DXQuaternionConjugate |
XMQuaternionConjugate |
D3DXQuaternionToAxisAngle |
XMQuaternionToAxisAngle |
D3DXQuaternionRotationMatrix |
XMQuaternionRotationMatrix |
D3DXQuaternionRotationAxis |
XMQuaternionRotationAxis |
D3DXQuaternionRotationYawPitchRoll |
XMQuaternionRotationRollPitchYaw (Note the order of parameters is different: D3DXMath takes yaw, pitch, roll, DirectXMath takes pitch, yaw, roll) |
D3DXQuaternionMultiply |
XMQuaternionMultiply |
D3DXQuaternionNormalize |
XMQuaternionNormalize or XMQuaternionNormalizeEst |
D3DXQuaternionInverse |
XMQuaternionInverse |
D3DXQuaternionLn |
XMQuaternionLn |
D3DXQuaternionExp |
XMQuaternionExp |
D3DXQuaternionSlerp |
XMQuaternionSlerp or XMQuaternionSlerpV |
D3DXQuaternionSquad |
XMQuaternionSquad or XMQuaternionSquadV |
D3DXQuaternionSquadSetup |
XMQuaternionSquadSetup |
D3DXQuaternionBaryCentric |
XMQuaternionBaryCentric or XMQuaternionBaryCentricV |
D3DXPlaneDot |
XMPlaneDot |
D3DXPlaneDotCoord |
XMPlaneDotCoord |
D3DXPlaneDotNormal |
XMPlaneDotNormal |
D3DXPlaneScale |
XMVectorScale |
D3DXPlaneNormalize |
XMPlaneNormalize or XMPlaneNormalizeEst |
D3DXPlaneIntersectLine |
XMPlaneIntersectLine |
D3DXPlaneFromPointNormal |
XMPlaneFromPointNormal |
D3DXPlaneFromPoints |
XMPlaneFromPoints |
D3DXPlaneTransform |
XMPlaneTransform |
D3DXPlaneTransformArray |
XMPlaneTransformStream |
D3DXColorNegative |
XMColorNegative |
D3DXColorAdd |
XMVectorAdd |
D3DXColorSubtract |
XMVectorSubtract |
D3DXColorScale |
XMVectorScale |
D3DXColorModulate |
XMColorModulate |
D3DXColorLerp |
XMVectorLerp or XMVectorLerpV |
D3DXColorAdjustSaturation |
XMColorAdjustSaturation |
D3DXColorAdjustContrast |
XMColorAdjustContrast |
D3DXFresnelTerm |
XMFresnelTerm |
Spherical Harmonics Math
The SHmath library is available as an add-on for DirectXMath.
XMSHEvalDirection |
Evaluates the Spherical Harmonic basis functions. Equivalent to D3DXSHEvalDirection function. |
XMSHRotate |
Rotates SH vector by a rotation matrix. Equivalent to the D3DXSHRotate function. |
XMSHRotateZ |
Rotates the SH vector in the Z axis by an angle. Equivalent to the D3DXSHRotateZ function. |
XMSHAdd |
Adds two SH vectors. Equivalent to the D3DXSHAdd function. |
XMSHScale |
Scales a SH vector. Equivalent to the D3DXSHScale function. |
XMSHDot |
Computes the dot product of two SH vectors. Equivalent to the D3DXSHDot function. |
XMSHMultiply2 |
Computes the product of two functions represented using SH. Equivalent to D3DXSHMultiply2, D3DXSHMultiply3, D3DXSHMultiply4, D3DXSHMultiply5, and D3DXSHMultiply6. |
XMSHEvalDirectionalLight |
Evaluates a directional light and returns spectral SH data. Equivalent to the D3DXSHEvalDirectionalLight function. |
XMSHEvalSphericalLight |
Evaluates a spherical light and returns spectral SH data. Equivalent to the D3DXEvalSphericalLight function. |
XMSHEvalConeLight |
Evaluates a light that is a cone of constant intensity and returns spectral SH data. Equivalent to the D3DXSHEvalConeLight function. |
XMSHEvalHemisphereLight |
Evaluates a light that is a linear interpolant between two colors over the sphere. Equivalent to the D3DXSHEvalHemisphereLight function. |
SHProjectCubeMap |
Projects a function represented in a cube map into spherical harmonics. Equivalent to the D3DX11SHProjectCubeMap function. |
Effects (FX)
The Effects system for Direct3D 11 is primarily provided as a porting aid for older code. The library is available on CodePlex and GitHub.
D3DXCreateEffect |
D3DX11CompileEffectFromMemory |
D3DXCreateEffectFromFile |
D3DX11CompileEffectFromFile |
D3D10CreateEffectFromMemory |
D3DX11CreateEffectFromMemory |
D3DXCreateEffectPool |
Effects 11 does not support 'effect pools' or D3DCOMPILE_EFFECT_CHILD_EFFECT . Effect groups provide a more efficient solution for common scenarios previously addressed with 'effect pools' |
D3DXDisassembleEffect |
D3DDisassemble D3DDisassemble10Effect in D3DCompile |
Performance/Profiling
D3DX9 included the entry-points intercepted by PIX for Windows for performance profiling. This is now handled by the DirectX runtime directly and is monitored by the Visual Studio Graphics Diagnostics tool.
D3DPERF_BeginEvent |
ID3DUserDefinedAnnotation which is supported by the DirectX 11.1 runtime on Windows 8.x and Windows 7 Service Pack 1 + KB2670838
If using DirectX 11.2+, you can use ID3D11DeviceContext2 directly for BeginEventInt, SetMarkerInt, and EndEvent. |
UVAtlas Functions
The UVAtlas library is intended for isochart creation offline with tools, although it can be used at runtime. You can find the library on CodePlex and GitHub.
D3DXUVAtlasCreate |
UVAtlasCreate |
D3DXUVAtlasPartition |
UVAtlasPartition |
D3DXUVAtlasPack |
UVAtlasPack |
D3DXComputeIMTFromPerVertexSignal |
UVAtlasComputeIMTFromPerVertexSignal |
D3DXComputeIMTFromPerTexelSignal |
UVAtlasComputeIMTFromPerTexelSignal |
D3DXComputeIMTFromSignal |
UVAtlasComputeIMTFromSignal |
D3DXComputeIMTFromTexture |
UVAtlasComputeIMTFromTexture |
Note
Careful readers will note that there are a few omissions from this table.
- The
ID3DXMatrixStack
from D3DXMath doesn't have a new version, but it's actually pretty easy to implement your own. If someone has a burning need for this, please comment below. - The Precomputed Radiance Transfer (PRT) simulator is only available in closed-source form in legacy D3DX9. There are a number of papers that cover this technology in the literature, and the most generally useful parts of this functionality are the SHmath functions which are available.
Background
A few folks have asked why the D3DX libraries were deprecated in the first place in the transition to the Windows 8.x SDK. D3DX has been a useful set of utility code for Direct3D applications since Direct3D 7, but has a presented a number of challenges over the years. The primary one is that as a 'closed-source' utility library; it was difficult to debug, resolve performance issues, or apply hot-fixes without taking a dependency on a newer release of the DirectX SDK. Second, with the security requirements that came with the adoption of the Secure Development Lifecycle (SDL) at Microsoft, the transition to a DLL rather than a static library created a redistribution requirement that complicated setup for many developers--note that static libraries have their own problems such as being specific to a particular release of the compiler including service pack level. D3DX9 itself became a bit bloated which resulted in a DLL larger than many EXEs that used it. Finally, the actual usable content of subsequent generations of D3DX left D3DX11 with not much in it. The need for useful utility code is still there, but it is now being solved with various 'shared-source' solutions rather than a monolithic closed-source DLL like D3DX.
In short, Microsoft has left its developers in the lurch once again.
One has to suspect this is a money making endeavour. Since depreciating a widely used library forces people to replace existing solutions and vendors to re-think their code if they want it to work with the new Windows 8 (which internally isn't all that different when you find where MS moved all your usual call code. It is not like the need went away).
This in short is why Android will continue to defeat Microsoft until Microsoft actually starts working for its customers not the other way around.
You can continue to use D3DX or XACT if needed for your Windows desktop application, it works fine on Windows 10, and compiles with VS 2012, VS 2013, and VS 2015 given the instructions on MSDN.
That said, generally you should re-think your code compared to how you wrote it for a PC that was made over a decade ago. Replacement of D3DX is just one of many things that have to be revisited when developing for Windows Store, Xbox One, and Windows phone. On the plus side, the majority of replacements I mention here are open source (either using the MS-PL or the MIT license).
Had this post had a blank entry on the right-hand side of every chart, then saying developers were 'left in the lurch' would have been a fair charge, but that's actually the exact opposite of what has happened.
So you can run existing applications that use D3DX et al on the latest versions of Windows–with the usual appcompat caveats–, you can rebuild old apps using newer tools using the legacy DirectX SDK, and you can replace closed-source D3DX functionality with open-source libraries written for C++11 era standards. The main thing that has gotten harder on newer versions of the OS is less debugging support for Direct3D 9, but if you are still using Direct3D 9 you probably want to target Windows XP which means you need to stick with the legacy DirectX SDK anyhow since that means you are using the Windows 7.1A SDK at best.
Microsoft is a commercial, for-profit enterprise, but given that (a) the legacy DirectX SDK and the Windows SDK are free, (b) the Visual Studio 2013 Community edition is full-featured and free for most non-enterprise customers, (c) that Windows 10 is being offered as a free upgrade for a year, and (d) all the replacements above work for the whole gamut of Microsoft platforms including Windows desktop applications, I'm not sure where you see the short-term influx of revenue coming from deprecating D3DX.
If there are areas not well served by the replacements offered in this blog post that were served well by D3DX, please let me know. The only major difference I can cite is that I'm focused on C++ and not directly supporting C language usage, where D3DX was a very C-centric design. This is intentional as a C++ design is more productive for C++ developers, the general focus of "modern" development is C++ rather than C based, and you can always wrap up functionality with C exports.
Thanks. I am currently a student developing an application using DirectX 11 and found the guide helpful.
Well, I’m sorry that I can’t find the new version of DXGetErrorDescription function. Could you please tell me about it?
Ah, sorry. It was in the Related links section but I made it a bit more obvious. See Where’s DXERR.LIB?
Thank you! Your reply helps me a lot.