您的位置:首页 > 其它

Living without D3DX

2015-12-15 23:13 1806 查看


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 

D3DXCreateCylinder 

D3DXCreateSphere

D3DXCreateTeapot 

D3DXCreateTorus
GeometricPrimitive

D3DX11CreateShaderResourceViewFromFile
CreateXXXTextureFromFile

D3DX11CreateShaderResourceViewFromResource

D3DX11CreateShaderResourceViewFromMemory
CreateXXXTextureFromMemory

D3DX11CreateTextureFromFile
CreateXXXTextureFromFile

D3DX11CreateTextureFromResource

D3DX11CreateTextureFromMemory
CreateXXXTextureFromMemory

D3DX11SaveTextureToFile
SaveXXXTextureToFile


HLSL Functions

The HLSL compiler, shader reflection API, and related functionality has been broken out into it's own D3DCompileDLL
for some time. D3DCompile is in the Windows 8.x SDK and is included with VS 2012 and VS 2013 Preview.
D3DXCompileShaderFromFile

D3DX10CompileFromFile

D3DX11CompileFromFile
D3DCompileFromFile
D3DXCompileShader

D3D10CompileShader

D3DX10CompileFromMemory

D3DX11CompileFromMemory
D3DCompile
D3DXCompileShaderFromResource

D3DX10CompileFromResource

D3DX11CompileFromResource
No direct equivalent. Can use resource APIs and then 
D3DCompile
above.
D3DXPreprocessShader

D3DXPreprocessShaderFromFile

D3DXPreprocessShaderFromResource

D3D10PreprocessShader

D3DX10PreprocessShaderFromFile

D3DX10PreprocessShaderFromMemory

D3DX10PreprocessShaderFromResource

D3DX11PreprocessShaderFromFile

D3DX11PreprocessShaderFromMemory

D3DX11PreprocessShaderFromResource
D3DPreprocess
D3DXDisassembleShader

D3D10DisassembleShader

D3DX10DisassembleShader
D3DDisassemble
D3D10ReflectShader

D3DX10ReflectShader
D3DReflect
D3D11Reflect
ID3DXBuffer

ID3D10Blob
ID3DBlob
D3DXCreateBuffer

D3D10CreateBlob
D3DCreateBlob
D3D10GetInputSignatureBlob

D3D10GetOutputSignatureBlob

D3D10GetInputAndOutputSignatureBlob

D3D10GetShaderDebugInfo
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

D3DX11CreateTextureFromFile
DDSTextureLoader: 
CreateDDSTextureFromFile


WICTextureLoader: 
CreateWICTextureFromFile


DirectXTex library (tools), 
LoadFromXXXFile
 then
CreateShaderResourceView
 or 
CreateTexture

D3DX11CreateShaderResourceViewFromMemory

D3DX11CreateTextureFromMemory
DDSTextureLoader: 
CreateDDSTextureFromMemory


WICTextureLoader: 
CreateWICTextureFromMemory


DirectXTex library (tools), 
LoadFromXXXMemory
 then
CreateShaderResourceView
 or 
CreateTexture

D3DX11CreateShaderResourceViewFromResource

D3DX11CreateTextureFromResource
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, 
CaptureTexture
 then 
SaveToXXXFile

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

D3DXComputeTangentFrame

D3DXComputeTangentFrameEx
ComputeTangentFrame
ID3DX10Mesh::GenerateAdjacencyAndPointReps
GenerateAdjacencyAndPointReps
ID3DX10Mesh::GenerateGSAdjacency
GenerateGSAdjacency
ID3DX10Mesh::Optimize
AttributeSort

OptimizeFacesEx

OptimizeVertices

ReorderIB

FinalizeIB

FinalizeVB
D3DXOptimizeFaces
OptimizeFaces
D3DXOptimizeVertices
OptimizeVertices
D3DXValidMesh
Validate


Math

The legacy D3DXMath library has been replaced by DirectXMath.
The library is in the Windows 8.x SDK and is included with VS 2012 and VS 2013 Preview.
D3DXFLOAT16
HALF
D3DXMATRIXA16
XMMATRIX or XMFLOAT4X4A
D3DXQUATERNION


D3DXPLANE


D3DXCOLOR

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 orXMFLOAT4A )
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 toD3DXSHEvalDirection 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 D3DXSHRotateZfunction.
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 D3DXSHDotfunction.
XMSHMultiply
XMSHMultiply2

XMSHMultiply3

XMSHMultiply4

XMSHMultiply5

XMSHMultiply6
Computes the product of two functions represented using SH. Equivalent toD3DXSHMultiply2D3DXSHMultiply3D3DXSHMultiply4D3DXSHMultiply5,
andD3DXSHMultiply6.
XMSHEvalDirectionalLight
Evaluates a directional light and returns spectral SH data. Equivalent to theD3DXSHEvalDirectionalLight function.
XMSHEvalSphericalLight
Evaluates a spherical light and returns spectral SH data. Equivalent to theD3DXEvalSphericalLight 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 onCodePlex and GitHub.
D3DXCreateEffect

D3DXCreateEffectEx

D3DXCreateEffectFromResource

D3DXCreateEffectFromResourceEx

D3D10CompileEffectFromMemory
D3DX11CompileEffectFromMemory

D3DXCreateEffectFromFile

D3DXCreateEffectFromFileEx
D3DX11CompileEffectFromFile

D3D10CreateEffectFromMemory
D3DX11CreateEffectFromMemory

D3DXCreateEffectPool

D3D10CreateEffectPoolFromMemory
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

D3D10DisassembleEffect
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

D3DPERF_EndEvent

D3DPERF_SetMarker

D3DPERF_SetRegion

D3DPERF_QueryRepeatFrame

D3DPERF_SetOptions

D3DPERF_GetStatus
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.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息