Skip to content

DualTextureEffect

Chuck Walbourn edited this page Jul 10, 2016 · 19 revisions

This is a native Direct3D 11 implementation of the built-in DualTextureEffect from XNA Game Studio 4 which supports two layer multi-texturing (for light maps or detail textures), with optional fogging.

See also Effects

Header

#include <Effects.h>

Initialization

Construction requires a Direct3D 11 device.

std::unique_ptr<DualTextureEffect> effect;
effect = std::make_unique<DualTextureEffect>(device);

For exception safety, it is recommended you make use of the C++ RAII pattern and use a std::unique_ptr or std::shared_ptr

Interfaces

DualTextureEffect supports IEffect, IEffectMatrices, and IEffectFog

Does not support lighting as it is assumed to be 'baked' into one of the two textures.

Input layout

This effect requires SV_Position, TEXCOORD0, and TEXCOORD1. It requires COLOR if per-vertex colors are enabled.

Properties

  • SetDiffuseColor: Sets the diffuse color of the effect. Defaults to white (1,1,1). Alpha channel (.w component) is ignored.

  • SetAlpha: Sets the alpha (transparency) of the effect. Defaults to 1 (fully opaque).

  • SetColorAndAlpha: Sets the diffuse color of the effect and the alpha (transparency).

  • SetVertexColorEnabled: Enables per-vertex color. Defaults to false. Modifying this setting requires recreating associated input layouts, and enabling it requires COLOR.

  • SetTexture: Associates a texture shader resource view with the effect. Can be set to nullptr to remove a reference.

  • SetTexture2: Associates a texture shader resource view with the effect. Can be set to nullptr to remove a reference.

Remarks

This effect requires a texture sampler in both slots 0 and 1. GeometricPrimitive and SpriteBatch only set a texture sampler in slot 0 by default, Model sets a sampler in slots 0 and 1.

GeometricPrimitive, Model loaded from VBO or CMO, and SpriteBatch only define a single set of texture coordinates in their vertex buffers so they can't be used with DualTextureEffect.

Further reading

DualTextureEffect

For Use

  • Universal Windows Platform apps
  • Windows desktop apps
  • Windows 11
  • Windows 10
  • Windows 8.1
  • Windows 7 Service Pack 1
  • Xbox One

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 12

DirectXMesh

DirectXTex

DirectXMath

Win2D

Tools

Test Suite

Model Viewer

Content Exporter

DxCapsViewer

Clone this wiki locally