Содержание
DirectXTK | Effects |
---|
This is a native Direct3D 12 implementation of the built-in AlphaTestEffect from XNA Game Studio 4 (Microsoft.Xna.Framework.Graphics.AlphaTestEffect
) which supports per-pixel alpha testing, vertex color, and fogging.
See also Effects
classDiagram
class EffectFlags{
<<enumeration>>
Fog
VertexColor
}
class IEffect{
<<Interface>>
+Apply()
}
class IEffectMatrices{
<<Interface>>
+SetWorld()
+SetView()
+SetProjection()
+SetMatrices()
}
class IEffectFog{
<<Interface>>
+SetFogStart()
+SetFogEnd()
+SetFogColor()
}
class AlphaTestEffect{
+SetDiffuseColor()
+SetAlpha()
+SetColorAndAlpha()
+SetTexture()
+SetReferenceAlpha()
}
AlphaTestEffect .. EffectFlags
AlphaTestEffect --|> IEffect
AlphaTestEffect --|> IEffectMatrices
AlphaTestEffect --|> IEffectFog
Header
#include <Effects.h>
Initialization
Construction requires a Direct3D 12 device, optional effect flags, and state description:
std::unique_ptr<AlphaTestEffect> effect;
RenderTargetState rtState(m_deviceResources->GetBackBufferFormat(),
m_deviceResources->GetDepthBufferFormat());
EffectPipelineStateDescription pd(
&InputLayout,
CommonStates::Opaque,
CommonStates::DepthDefault,
CommonStates::CullCounterClockwise,
rtState);
effect = std::make_unique<AlphaTestEffect>(device, EffectFlags::None, pd);
For exception safety, it is recommended you make use of the C++ RAII pattern and use a std::unique_ptr
or std::shared_ptr
The constructor takes one additional optional parameter that controls the test function (see D3D12_COMPARISON_FUNC)
AlphaTestEffect(ID3D12Device* device, int effectFlags,
const EffectPipelineStateDescription& pipelineDescription,
D3D12_COMPARISON_FUNC alphaFunction = D3D12_COMPARISON_FUNC_GREATER);
Interfaces
AlphaTestEffect supports IEffect, IEffectMatrices, and IEffectFog. EffectFlags::Fog
is required to enable fogging.
Input layout
This effect requires SV_Position
and TEXCOORD0
. It requires COLOR
if per-vertex colors are enabled (EffectFlags::VertexColor
).
Properties
-
SetTexture: Associates a texture and sampler descriptor with the effect.
-
SetReferenceAlpha: Sets the alpha reference value for the test.
Remarks
Does not support lighting (EffectFlags::Lighting
or EffectsFlags::PerPixelLighting
). The EffectFlags::BiasedVertexNormals
flag is ignored by this effect.
The EffectFlags::Texture
flag is always enabled for this effect, so use or absence of this flag is ignored for this effect.
This effect is primarily used to implement techniques that relied on legacy Direct3D 9 alpha testing render state. This effect is independent of the depth/stencil tests set in D3D12_DEPTH_STENCIL_DESC.DepthFunc
and StencilFunc
.
For Use
- Universal Windows Platform apps
- Windows desktop apps
- Windows 11
- Windows 10
- Xbox One
- Xbox Series X|S
Architecture
- x86
- x64
- ARM64
For Development
- Visual Studio 2022
- Visual Studio 2019 (16.11)
- clang/LLVM v12 - v18
- MinGW 12.2, 13.2
- CMake 3.20
Related Projects
DirectX Tool Kit for DirectX 11
Tools
See also
All content and source code for this package are subject to the terms of the MIT License.
This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact opencode@microsoft.com with any additional questions or comments.