summaryrefslogtreecommitdiff
path: root/sample/d3d11/Effects11/Inc
diff options
context:
space:
mode:
authorJason Maskell <[email protected]>2016-05-12 10:58:15 +0200
committerJason Maskell <[email protected]>2016-05-12 10:58:15 +0200
commit72b21c69e32c73abf3a18b0e962746e64faebba4 (patch)
treecd22b1b298bc865c3ae6037e8eb89a64a94203ea /sample/d3d11/Effects11/Inc
parentMerge branch 'master' of https://github.com/NVIDIAGameWorks/WaveWorks (diff)
downloadwaveworks_archive-72b21c69e32c73abf3a18b0e962746e64faebba4.tar.xz
waveworks_archive-72b21c69e32c73abf3a18b0e962746e64faebba4.zip
Restructuring starts. Got some initial CMake problems sorted. Need to extend.
Diffstat (limited to 'sample/d3d11/Effects11/Inc')
-rw-r--r--sample/d3d11/Effects11/Inc/d3dx11dbg.h66
-rw-r--r--sample/d3d11/Effects11/Inc/d3dx11effect.h1566
-rw-r--r--sample/d3d11/Effects11/Inc/d3dxGlobal.h1337
3 files changed, 0 insertions, 2969 deletions
diff --git a/sample/d3d11/Effects11/Inc/d3dx11dbg.h b/sample/d3d11/Effects11/Inc/d3dx11dbg.h
deleted file mode 100644
index 49ed3b3..0000000
--- a/sample/d3d11/Effects11/Inc/d3dx11dbg.h
+++ /dev/null
@@ -1,66 +0,0 @@
-//////////////////////////////////////////////////////////////////////////////
-//
-// Copyright (C) Microsoft Corporation. All Rights Reserved.
-//
-// File: d3dx11dbg.h
-// Content: D3DX11 debugging functions
-//
-//////////////////////////////////////////////////////////////////////////////
-
-
-#ifndef __D3DX11DBG_H__
-#define __D3DX11DBG_H__
-
-#ifndef _PREFAST_
-
-#pragma warning( disable: 4068 )
-
-#endif
-
-
-#include <strsafe.h>
-#include <new>
-
-#undef NEW
-#undef DELETE
-
-#define NEW new (std::nothrow)
-#define NEW_PROTO_ARGS size_t s, const std::nothrow_t& t
-
-
-
-typedef signed char INT8;
-typedef signed short INT16;
-typedef unsigned char UINT8;
-typedef unsigned short UINT16;
-
-
-//----------------------------------------------------------------------------
-// DPF
-//----------------------------------------------------------------------------
-
-#ifdef FXDPF
-void cdecl D3DXDebugPrintf(UINT lvl, LPCSTR szFormat, ...);
-#define DPF D3DXDebugPrintf
-#else // !FXDPF
-#pragma warning(disable:4002)
-#define DPF() 0
-#endif // !FXDPF
-
-
-//----------------------------------------------------------------------------
-// D3DXASSERT
-//----------------------------------------------------------------------------
-
-#if _DEBUG
-int WINAPI D3DXDebugAssert(LPCSTR szFile, int nLine, LPCSTR szCondition);
-#define D3DXASSERT(condition) \
- do { if(!(condition)) D3DXDebugAssert(__FILE__, __LINE__, #condition); } while(0)
-#else // !_DEBUG
-#define D3DXASSERT(condition) 0
-#endif // !_DEBUG
-
-
-
-#endif // __D3DX11DBG_H__
-
diff --git a/sample/d3d11/Effects11/Inc/d3dx11effect.h b/sample/d3d11/Effects11/Inc/d3dx11effect.h
deleted file mode 100644
index fc162fc..0000000
--- a/sample/d3d11/Effects11/Inc/d3dx11effect.h
+++ /dev/null
@@ -1,1566 +0,0 @@
-//////////////////////////////////////////////////////////////////////////////
-//
-// Copyright (c) Microsoft Corporation. All rights reserved.
-//
-// File: D3DX11Effect.h
-// Content: D3DX11 Effect Types & APIs Header
-//
-//////////////////////////////////////////////////////////////////////////////
-
-#ifndef __D3DX11EFFECT_H__
-#define __D3DX11EFFECT_H__
-
-#include "d3d11.h"
-#include "d3d11shader.h"
-
-//////////////////////////////////////////////////////////////////////////////
-// File contents:
-//
-// 1) Stateblock enums, structs, interfaces, flat APIs
-// 2) Effect enums, structs, interfaces, flat APIs
-//////////////////////////////////////////////////////////////////////////////
-
-#ifndef D3DX11_BYTES_FROM_BITS
-#define D3DX11_BYTES_FROM_BITS(x) (((x) + 7) / 8)
-#endif // D3DX11_BYTES_FROM_BITS
-
-typedef struct _D3DX11_STATE_BLOCK_MASK
-{
- BYTE VS;
- BYTE VSSamplers[D3DX11_BYTES_FROM_BITS(D3D11_COMMONSHADER_SAMPLER_SLOT_COUNT)];
- BYTE VSShaderResources[D3DX11_BYTES_FROM_BITS(D3D11_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT)];
- BYTE VSConstantBuffers[D3DX11_BYTES_FROM_BITS(D3D11_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT)];
- BYTE VSInterfaces[D3DX11_BYTES_FROM_BITS(D3D11_SHADER_MAX_INTERFACES)];
-
- BYTE HS;
- BYTE HSSamplers[D3DX11_BYTES_FROM_BITS(D3D11_COMMONSHADER_SAMPLER_SLOT_COUNT)];
- BYTE HSShaderResources[D3DX11_BYTES_FROM_BITS(D3D11_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT)];
- BYTE HSConstantBuffers[D3DX11_BYTES_FROM_BITS(D3D11_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT)];
- BYTE HSInterfaces[D3DX11_BYTES_FROM_BITS(D3D11_SHADER_MAX_INTERFACES)];
-
- BYTE DS;
- BYTE DSSamplers[D3DX11_BYTES_FROM_BITS(D3D11_COMMONSHADER_SAMPLER_SLOT_COUNT)];
- BYTE DSShaderResources[D3DX11_BYTES_FROM_BITS(D3D11_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT)];
- BYTE DSConstantBuffers[D3DX11_BYTES_FROM_BITS(D3D11_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT)];
- BYTE DSInterfaces[D3DX11_BYTES_FROM_BITS(D3D11_SHADER_MAX_INTERFACES)];
-
- BYTE GS;
- BYTE GSSamplers[D3DX11_BYTES_FROM_BITS(D3D11_COMMONSHADER_SAMPLER_SLOT_COUNT)];
- BYTE GSShaderResources[D3DX11_BYTES_FROM_BITS(D3D11_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT)];
- BYTE GSConstantBuffers[D3DX11_BYTES_FROM_BITS(D3D11_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT)];
- BYTE GSInterfaces[D3DX11_BYTES_FROM_BITS(D3D11_SHADER_MAX_INTERFACES)];
-
- BYTE PS;
- BYTE PSSamplers[D3DX11_BYTES_FROM_BITS(D3D11_COMMONSHADER_SAMPLER_SLOT_COUNT)];
- BYTE PSShaderResources[D3DX11_BYTES_FROM_BITS(D3D11_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT)];
- BYTE PSConstantBuffers[D3DX11_BYTES_FROM_BITS(D3D11_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT)];
- BYTE PSInterfaces[D3DX11_BYTES_FROM_BITS(D3D11_SHADER_MAX_INTERFACES)];
- BYTE PSUnorderedAccessViews;
-
- BYTE CS;
- BYTE CSSamplers[D3DX11_BYTES_FROM_BITS(D3D11_COMMONSHADER_SAMPLER_SLOT_COUNT)];
- BYTE CSShaderResources[D3DX11_BYTES_FROM_BITS(D3D11_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT)];
- BYTE CSConstantBuffers[D3DX11_BYTES_FROM_BITS(D3D11_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT)];
- BYTE CSInterfaces[D3DX11_BYTES_FROM_BITS(D3D11_SHADER_MAX_INTERFACES)];
- BYTE CSUnorderedAccessViews;
-
- BYTE IAVertexBuffers[D3DX11_BYTES_FROM_BITS(D3D11_IA_VERTEX_INPUT_RESOURCE_SLOT_COUNT)];
- BYTE IAIndexBuffer;
- BYTE IAInputLayout;
- BYTE IAPrimitiveTopology;
-
- BYTE OMRenderTargets;
- BYTE OMDepthStencilState;
- BYTE OMBlendState;
-
- BYTE RSViewports;
- BYTE RSScissorRects;
- BYTE RSRasterizerState;
-
- BYTE SOBuffers;
-
- BYTE Predication;
-} D3DX11_STATE_BLOCK_MASK;
-
-//----------------------------------------------------------------------------
-// D3DX11_EFFECT flags:
-// -------------------------------------
-//
-// These flags are passed in when creating an effect, and affect
-// the runtime effect behavior:
-//
-// (Currently none)
-//
-//
-// These flags are set by the effect runtime:
-//
-// D3DX11_EFFECT_OPTIMIZED
-// This effect has been optimized. Reflection functions that rely on
-// names/semantics/strings should fail. This is set when Optimize() is
-// called, but CEffect::IsOptimized() should be used to test for this.
-//
-// D3DX11_EFFECT_CLONE
-// This effect is a clone of another effect. Single CBs will never be
-// updated when internal variable values are changed.
-// This flag is not set when the D3DX11_EFFECT_CLONE_FORCE_NONSINGLE flag
-// is used in cloning.
-//
-//----------------------------------------------------------------------------
-
-#define D3DX11_EFFECT_OPTIMIZED (1 << 21)
-#define D3DX11_EFFECT_CLONE (1 << 22)
-
-// These are the only valid parameter flags to D3DX11CreateEffect*
-#define D3DX11_EFFECT_RUNTIME_VALID_FLAGS (0)
-
-//----------------------------------------------------------------------------
-// D3DX11_EFFECT_VARIABLE flags:
-// ----------------------------
-//
-// These flags describe an effect variable (global or annotation),
-// and are returned in D3DX11_EFFECT_VARIABLE_DESC::Flags.
-//
-// D3DX11_EFFECT_VARIABLE_ANNOTATION
-// Indicates that this is an annotation on a technique, pass, or global
-// variable. Otherwise, this is a global variable. Annotations cannot
-// be shared.
-//
-// D3DX11_EFFECT_VARIABLE_EXPLICIT_BIND_POINT
-// Indicates that the variable has been explicitly bound using the
-// register keyword.
-//----------------------------------------------------------------------------
-
-#define D3DX11_EFFECT_VARIABLE_ANNOTATION (1 << 1)
-#define D3DX11_EFFECT_VARIABLE_EXPLICIT_BIND_POINT (1 << 2)
-
-//----------------------------------------------------------------------------
-// D3DX11_EFFECT_CLONE flags:
-// ----------------------------
-//
-// These flags modify the effect cloning process and are passed into Clone.
-//
-// D3DX11_EFFECT_CLONE_FORCE_NONSINGLE
-// Ignore all "single" qualifiers on cbuffers. All cbuffers will have their
-// own ID3D11Buffer's created in the cloned effect.
-//----------------------------------------------------------------------------
-
-#define D3DX11_EFFECT_CLONE_FORCE_NONSINGLE (1 << 0)
-
-//----------------------------------------------------------------------------
-// D3DX11_EFFECT_PASS flags:
-// ----------------------------
-//
-// These flags modify the effect cloning process and are passed into Clone.
-//
-// D3DX11_EFFECT_PASS_COMMIT_CHANGES
-// This flag tells the effect runtime to assume that the device state was
-// not modified outside of effects, so that only updated state needs to
-// be set.
-//
-// D3DX11_EFFECT_PASS_OMIT_*
-// When applying a pass, do not set the state indicated in the flag name.
-//----------------------------------------------------------------------------
-
-#define D3DX11_EFFECT_PASS_COMMIT_CHANGES (1 << 0) // TODO: not yet implemented
-#define D3DX11_EFFECT_PASS_OMIT_SHADERS_AND_INTERFACES (1 << 1) // TODO: not yet implemented
-#define D3DX11_EFFECT_PASS_OMIT_STATE_OBJECTS (1 << 2) // TODO: not yet implemented
-#define D3DX11_EFFECT_PASS_OMIT_RTVS_AND_DSVS (1 << 3) // TODO: not yet implemented
-#define D3DX11_EFFECT_PASS_OMIT_SAMPLERS (1 << 4) // TODO: not yet implemented
-#define D3DX11_EFFECT_PASS_OMIT_CBS (1 << 5) // TODO: not yet implemented
-#define D3DX11_EFFECT_PASS_OMIT_SRVS (1 << 6) // TODO: not yet implemented
-#define D3DX11_EFFECT_PASS_OMIT_UAVS (1 << 7) // TODO: not yet implemented
-
-#define D3DX11_EFFECT_PASS_ONLY_SET_SHADERS_AND_CBS ( D3DX11_EFFECT_PASS_OMIT_STATE_OBJECTS | \
- D3DX11_EFFECT_PASS_OMIT_RTVS_AND_DSVS | \
- D3DX11_EFFECT_PASS_OMIT_SAMPLERS | \
- D3DX11_EFFECT_PASS_OMIT_SRVS | \
- D3DX11_EFFECT_PASS_OMIT_UAVS );
-
-//////////////////////////////////////////////////////////////////////////////
-// ID3DX11EffectType //////////////////////////////////////////////////////////
-//////////////////////////////////////////////////////////////////////////////
-
-//----------------------------------------------------------------------------
-// D3DX11_EFFECT_TYPE_DESC:
-//
-// Retrieved by ID3DX11EffectType::GetDesc()
-//----------------------------------------------------------------------------
-
-typedef struct _D3DX11_EFFECT_TYPE_DESC
-{
- LPCSTR TypeName; // Name of the type
- // (e.g. "float4" or "MyStruct")
-
- D3D10_SHADER_VARIABLE_CLASS Class; // (e.g. scalar, vector, object, etc.)
- D3D10_SHADER_VARIABLE_TYPE Type; // (e.g. float, texture, vertexshader, etc.)
-
- UINT Elements; // Number of elements in this type
- // (0 if not an array)
- UINT Members; // Number of members
- // (0 if not a structure)
- UINT Rows; // Number of rows in this type
- // (0 if not a numeric primitive)
- UINT Columns; // Number of columns in this type
- // (0 if not a numeric primitive)
-
- UINT PackedSize; // Number of bytes required to represent
- // this data type, when tightly packed
- UINT UnpackedSize; // Number of bytes occupied by this data
- // type, when laid out in a constant buffer
- UINT Stride; // Number of bytes to seek between elements,
- // when laid out in a constant buffer
-} D3DX11_EFFECT_TYPE_DESC;
-
-typedef interface ID3DX11EffectType ID3DX11EffectType;
-typedef interface ID3DX11EffectType *LPD3D11EFFECTTYPE;
-
-// {4250D721-D5E5-491F-B62B-587C43186285}
-DEFINE_GUID(IID_ID3DX11EffectType,
- 0x4250d721, 0xd5e5, 0x491f, 0xb6, 0x2b, 0x58, 0x7c, 0x43, 0x18, 0x62, 0x85);
-
-#undef INTERFACE
-#define INTERFACE ID3DX11EffectType
-
-DECLARE_INTERFACE(ID3DX11EffectType)
-{
- STDMETHOD_(BOOL, IsValid)(THIS) PURE;
- STDMETHOD(GetDesc)(THIS_ D3DX11_EFFECT_TYPE_DESC *pDesc) PURE;
- STDMETHOD_(ID3DX11EffectType*, GetMemberTypeByIndex)(THIS_ UINT Index) PURE;
- STDMETHOD_(ID3DX11EffectType*, GetMemberTypeByName)(THIS_ LPCSTR Name) PURE;
- STDMETHOD_(ID3DX11EffectType*, GetMemberTypeBySemantic)(THIS_ LPCSTR Semantic) PURE;
- STDMETHOD_(LPCSTR, GetMemberName)(THIS_ UINT Index) PURE;
- STDMETHOD_(LPCSTR, GetMemberSemantic)(THIS_ UINT Index) PURE;
-};
-
-//////////////////////////////////////////////////////////////////////////////
-// ID3DX11EffectVariable //////////////////////////////////////////////////////
-//////////////////////////////////////////////////////////////////////////////
-
-//----------------------------------------------------------------------------
-// D3DX11_EFFECT_VARIABLE_DESC:
-//
-// Retrieved by ID3DX11EffectVariable::GetDesc()
-//----------------------------------------------------------------------------
-
-typedef struct _D3DX11_EFFECT_VARIABLE_DESC
-{
- LPCSTR Name; // Name of this variable, annotation,
- // or structure member
- LPCSTR Semantic; // Semantic string of this variable
- // or structure member (NULL for
- // annotations or if not present)
-
- UINT Flags; // D3DX11_EFFECT_VARIABLE_* flags
- UINT Annotations; // Number of annotations on this variable
- // (always 0 for annotations)
-
- UINT BufferOffset; // Offset into containing cbuffer or tbuffer
- // (always 0 for annotations or variables
- // not in constant buffers)
-
- UINT ExplicitBindPoint; // Used if the variable has been explicitly bound
- // using the register keyword. Check Flags for
- // D3DX11_EFFECT_VARIABLE_EXPLICIT_BIND_POINT;
-} D3DX11_EFFECT_VARIABLE_DESC;
-
-typedef interface ID3DX11EffectVariable ID3DX11EffectVariable;
-typedef interface ID3DX11EffectVariable *LPD3D11EFFECTVARIABLE;
-
-// {036A777D-B56E-4B25-B313-CC3DDAB71873}
-DEFINE_GUID(IID_ID3DX11EffectVariable,
- 0x036a777d, 0xb56e, 0x4b25, 0xb3, 0x13, 0xcc, 0x3d, 0xda, 0xb7, 0x18, 0x73);
-
-#undef INTERFACE
-#define INTERFACE ID3DX11EffectVariable
-
-// Forward defines
-typedef interface ID3DX11EffectScalarVariable ID3DX11EffectScalarVariable;
-typedef interface ID3DX11EffectVectorVariable ID3DX11EffectVectorVariable;
-typedef interface ID3DX11EffectMatrixVariable ID3DX11EffectMatrixVariable;
-typedef interface ID3DX11EffectStringVariable ID3DX11EffectStringVariable;
-typedef interface ID3DX11EffectClassInstanceVariable ID3DX11EffectClassInstanceVariable;
-typedef interface ID3DX11EffectInterfaceVariable ID3DX11EffectInterfaceVariable;
-typedef interface ID3DX11EffectShaderResourceVariable ID3DX11EffectShaderResourceVariable;
-typedef interface ID3DX11EffectUnorderedAccessViewVariable ID3DX11EffectUnorderedAccessViewVariable;
-typedef interface ID3DX11EffectRenderTargetViewVariable ID3DX11EffectRenderTargetViewVariable;
-typedef interface ID3DX11EffectDepthStencilViewVariable ID3DX11EffectDepthStencilViewVariable;
-typedef interface ID3DX11EffectConstantBuffer ID3DX11EffectConstantBuffer;
-typedef interface ID3DX11EffectShaderVariable ID3DX11EffectShaderVariable;
-typedef interface ID3DX11EffectBlendVariable ID3DX11EffectBlendVariable;
-typedef interface ID3DX11EffectDepthStencilVariable ID3DX11EffectDepthStencilVariable;
-typedef interface ID3DX11EffectRasterizerVariable ID3DX11EffectRasterizerVariable;
-typedef interface ID3DX11EffectSamplerVariable ID3DX11EffectSamplerVariable;
-
-DECLARE_INTERFACE(ID3DX11EffectVariable)
-{
- STDMETHOD_(BOOL, IsValid)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectType*, GetType)(THIS) PURE;
- STDMETHOD(GetDesc)(THIS_ D3DX11_EFFECT_VARIABLE_DESC *pDesc) PURE;
-
- STDMETHOD_(ID3DX11EffectVariable*, GetAnnotationByIndex)(THIS_ UINT Index) PURE;
- STDMETHOD_(ID3DX11EffectVariable*, GetAnnotationByName)(THIS_ LPCSTR Name) PURE;
-
- STDMETHOD_(ID3DX11EffectVariable*, GetMemberByIndex)(THIS_ UINT Index) PURE;
- STDMETHOD_(ID3DX11EffectVariable*, GetMemberByName)(THIS_ LPCSTR Name) PURE;
- STDMETHOD_(ID3DX11EffectVariable*, GetMemberBySemantic)(THIS_ LPCSTR Semantic) PURE;
-
- STDMETHOD_(ID3DX11EffectVariable*, GetElement)(THIS_ UINT Index) PURE;
-
- STDMETHOD_(ID3DX11EffectConstantBuffer*, GetParentConstantBuffer)(THIS) PURE;
-
- STDMETHOD_(ID3DX11EffectScalarVariable*, AsScalar)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectVectorVariable*, AsVector)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectMatrixVariable*, AsMatrix)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectStringVariable*, AsString)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectClassInstanceVariable*, AsClassInstance)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectInterfaceVariable*, AsInterface)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectShaderResourceVariable*, AsShaderResource)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectUnorderedAccessViewVariable*, AsUnorderedAccessView)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectRenderTargetViewVariable*, AsRenderTargetView)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectDepthStencilViewVariable*, AsDepthStencilView)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectConstantBuffer*, AsConstantBuffer)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectShaderVariable*, AsShader)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectBlendVariable*, AsBlend)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectDepthStencilVariable*, AsDepthStencil)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectRasterizerVariable*, AsRasterizer)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectSamplerVariable*, AsSampler)(THIS) PURE;
-
- STDMETHOD(SetRawValue)(THIS_ CONST void *pData, UINT Offset, UINT Count) PURE;
- STDMETHOD(GetRawValue)(THIS_ void *pData, UINT Offset, UINT Count) PURE;
-};
-
-//////////////////////////////////////////////////////////////////////////////
-// ID3DX11EffectScalarVariable ////////////////////////////////////////////////
-//////////////////////////////////////////////////////////////////////////////
-
-typedef interface ID3DX11EffectScalarVariable ID3DX11EffectScalarVariable;
-typedef interface ID3DX11EffectScalarVariable *LPD3D11EFFECTSCALARVARIABLE;
-
-// {921EF2E5-A65D-4E92-9FC6-4E9CC09A4ADE}
-DEFINE_GUID(IID_ID3DX11EffectScalarVariable,
- 0x921ef2e5, 0xa65d, 0x4e92, 0x9f, 0xc6, 0x4e, 0x9c, 0xc0, 0x9a, 0x4a, 0xde);
-
-#undef INTERFACE
-#define INTERFACE ID3DX11EffectScalarVariable
-
-DECLARE_INTERFACE_(ID3DX11EffectScalarVariable, ID3DX11EffectVariable)
-{
- STDMETHOD_(BOOL, IsValid)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectType*, GetType)(THIS) PURE;
- STDMETHOD(GetDesc)(THIS_ D3DX11_EFFECT_VARIABLE_DESC *pDesc) PURE;
-
- STDMETHOD_(ID3DX11EffectVariable*, GetAnnotationByIndex)(THIS_ UINT Index) PURE;
- STDMETHOD_(ID3DX11EffectVariable*, GetAnnotationByName)(THIS_ LPCSTR Name) PURE;
-
- STDMETHOD_(ID3DX11EffectVariable*, GetMemberByIndex)(THIS_ UINT Index) PURE;
- STDMETHOD_(ID3DX11EffectVariable*, GetMemberByName)(THIS_ LPCSTR Name) PURE;
- STDMETHOD_(ID3DX11EffectVariable*, GetMemberBySemantic)(THIS_ LPCSTR Semantic) PURE;
-
- STDMETHOD_(ID3DX11EffectVariable*, GetElement)(THIS_ UINT Index) PURE;
-
- STDMETHOD_(ID3DX11EffectConstantBuffer*, GetParentConstantBuffer)(THIS) PURE;
-
- STDMETHOD_(ID3DX11EffectScalarVariable*, AsScalar)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectVectorVariable*, AsVector)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectMatrixVariable*, AsMatrix)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectStringVariable*, AsString)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectClassInstanceVariable*, AsClassInstance)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectInterfaceVariable*, AsInterface)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectShaderResourceVariable*, AsShaderResource)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectUnorderedAccessViewVariable*, AsUnorderedAccessView)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectRenderTargetViewVariable*, AsRenderTargetView)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectDepthStencilViewVariable*, AsDepthStencilView)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectConstantBuffer*, AsConstantBuffer)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectShaderVariable*, AsShader)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectBlendVariable*, AsBlend)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectDepthStencilVariable*, AsDepthStencil)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectRasterizerVariable*, AsRasterizer)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectSamplerVariable*, AsSampler)(THIS) PURE;
-
- STDMETHOD(SetRawValue)(THIS_ CONST void *pData, UINT ByteOffset, UINT ByteCount) PURE;
- STDMETHOD(GetRawValue)(THIS_ void *pData, UINT ByteOffset, UINT ByteCount) PURE;
-
- STDMETHOD(SetFloat)(THIS_ CONST float Value) PURE;
- STDMETHOD(GetFloat)(THIS_ float *pValue) PURE;
-
- STDMETHOD(SetFloatArray)(THIS_ CONST float *pData, UINT Offset, UINT Count) PURE;
- STDMETHOD(GetFloatArray)(THIS_ float *pData, UINT Offset, UINT Count) PURE;
-
- STDMETHOD(SetInt)(THIS_ CONST int Value) PURE;
- STDMETHOD(GetInt)(THIS_ int *pValue) PURE;
-
- STDMETHOD(SetIntArray)(THIS_ CONST int *pData, UINT Offset, UINT Count) PURE;
- STDMETHOD(GetIntArray)(THIS_ int *pData, UINT Offset, UINT Count) PURE;
-
- STDMETHOD(SetBool)(THIS_ CONST BOOL Value) PURE;
- STDMETHOD(GetBool)(THIS_ BOOL *pValue) PURE;
-
- STDMETHOD(SetBoolArray)(THIS_ CONST BOOL *pData, UINT Offset, UINT Count) PURE;
- STDMETHOD(GetBoolArray)(THIS_ BOOL *pData, UINT Offset, UINT Count) PURE;
-};
-
-//////////////////////////////////////////////////////////////////////////////
-// ID3DX11EffectVectorVariable ////////////////////////////////////////////////
-//////////////////////////////////////////////////////////////////////////////
-
-typedef interface ID3DX11EffectVectorVariable ID3DX11EffectVectorVariable;
-typedef interface ID3DX11EffectVectorVariable *LPD3D11EFFECTVECTORVARIABLE;
-
-// {5E785D4A-D87B-48D8-B6E6-0F8CA7E7467A}
-DEFINE_GUID(IID_ID3DX11EffectVectorVariable,
- 0x5e785d4a, 0xd87b, 0x48d8, 0xb6, 0xe6, 0x0f, 0x8c, 0xa7, 0xe7, 0x46, 0x7a);
-
-#undef INTERFACE
-#define INTERFACE ID3DX11EffectVectorVariable
-
-DECLARE_INTERFACE_(ID3DX11EffectVectorVariable, ID3DX11EffectVariable)
-{
- STDMETHOD_(BOOL, IsValid)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectType*, GetType)(THIS) PURE;
- STDMETHOD(GetDesc)(THIS_ D3DX11_EFFECT_VARIABLE_DESC *pDesc) PURE;
-
- STDMETHOD_(ID3DX11EffectVariable*, GetAnnotationByIndex)(THIS_ UINT Index) PURE;
- STDMETHOD_(ID3DX11EffectVariable*, GetAnnotationByName)(THIS_ LPCSTR Name) PURE;
-
- STDMETHOD_(ID3DX11EffectVariable*, GetMemberByIndex)(THIS_ UINT Index) PURE;
- STDMETHOD_(ID3DX11EffectVariable*, GetMemberByName)(THIS_ LPCSTR Name) PURE;
- STDMETHOD_(ID3DX11EffectVariable*, GetMemberBySemantic)(THIS_ LPCSTR Semantic) PURE;
-
- STDMETHOD_(ID3DX11EffectVariable*, GetElement)(THIS_ UINT Index) PURE;
-
- STDMETHOD_(ID3DX11EffectConstantBuffer*, GetParentConstantBuffer)(THIS) PURE;
-
- STDMETHOD_(ID3DX11EffectScalarVariable*, AsScalar)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectVectorVariable*, AsVector)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectMatrixVariable*, AsMatrix)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectStringVariable*, AsString)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectClassInstanceVariable*, AsClassInstance)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectInterfaceVariable*, AsInterface)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectShaderResourceVariable*, AsShaderResource)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectUnorderedAccessViewVariable*, AsUnorderedAccessView)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectRenderTargetViewVariable*, AsRenderTargetView)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectDepthStencilViewVariable*, AsDepthStencilView)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectConstantBuffer*, AsConstantBuffer)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectShaderVariable*, AsShader)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectBlendVariable*, AsBlend)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectDepthStencilVariable*, AsDepthStencil)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectRasterizerVariable*, AsRasterizer)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectSamplerVariable*, AsSampler)(THIS) PURE;
-
- STDMETHOD(SetRawValue)(THIS_ CONST void *pData, UINT ByteOffset, UINT ByteCount) PURE;
- STDMETHOD(GetRawValue)(THIS_ void *pData, UINT ByteOffset, UINT ByteCount) PURE;
-
- STDMETHOD(SetBoolVector) (THIS_ CONST BOOL *pData) PURE;
- STDMETHOD(SetIntVector) (THIS_ CONST int *pData) PURE;
- STDMETHOD(SetFloatVector)(THIS_ CONST float *pData) PURE;
-
- STDMETHOD(GetBoolVector) (THIS_ BOOL *pData) PURE;
- STDMETHOD(GetIntVector) (THIS_ int *pData) PURE;
- STDMETHOD(GetFloatVector)(THIS_ float *pData) PURE;
-
- STDMETHOD(SetBoolVectorArray) (THIS_ CONST BOOL *pData, UINT Offset, UINT Count) PURE;
- STDMETHOD(SetIntVectorArray) (THIS_ CONST int *pData, UINT Offset, UINT Count) PURE;
- STDMETHOD(SetFloatVectorArray)(THIS_ CONST float *pData, UINT Offset, UINT Count) PURE;
-
- STDMETHOD(GetBoolVectorArray) (THIS_ BOOL *pData, UINT Offset, UINT Count) PURE;
- STDMETHOD(GetIntVectorArray) (THIS_ int *pData, UINT Offset, UINT Count) PURE;
- STDMETHOD(GetFloatVectorArray)(THIS_ float *pData, UINT Offset, UINT Count) PURE;
-};
-
-//////////////////////////////////////////////////////////////////////////////
-// ID3DX11EffectMatrixVariable ////////////////////////////////////////////////
-//////////////////////////////////////////////////////////////////////////////
-
-typedef interface ID3DX11EffectMatrixVariable ID3DX11EffectMatrixVariable;
-typedef interface ID3DX11EffectMatrixVariable *LPD3D11EFFECTMATRIXVARIABLE;
-
-// {E1096CF4-C027-419A-8D86-D29173DC803E}
-DEFINE_GUID(IID_ID3DX11EffectMatrixVariable,
- 0xe1096cf4, 0xc027, 0x419a, 0x8d, 0x86, 0xd2, 0x91, 0x73, 0xdc, 0x80, 0x3e);
-
-#undef INTERFACE
-#define INTERFACE ID3DX11EffectMatrixVariable
-
-DECLARE_INTERFACE_(ID3DX11EffectMatrixVariable, ID3DX11EffectVariable)
-{
- STDMETHOD_(BOOL, IsValid)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectType*, GetType)(THIS) PURE;
- STDMETHOD(GetDesc)(THIS_ D3DX11_EFFECT_VARIABLE_DESC *pDesc) PURE;
-
- STDMETHOD_(ID3DX11EffectVariable*, GetAnnotationByIndex)(THIS_ UINT Index) PURE;
- STDMETHOD_(ID3DX11EffectVariable*, GetAnnotationByName)(THIS_ LPCSTR Name) PURE;
-
- STDMETHOD_(ID3DX11EffectVariable*, GetMemberByIndex)(THIS_ UINT Index) PURE;
- STDMETHOD_(ID3DX11EffectVariable*, GetMemberByName)(THIS_ LPCSTR Name) PURE;
- STDMETHOD_(ID3DX11EffectVariable*, GetMemberBySemantic)(THIS_ LPCSTR Semantic) PURE;
-
- STDMETHOD_(ID3DX11EffectVariable*, GetElement)(THIS_ UINT Index) PURE;
-
- STDMETHOD_(ID3DX11EffectConstantBuffer*, GetParentConstantBuffer)(THIS) PURE;
-
- STDMETHOD_(ID3DX11EffectScalarVariable*, AsScalar)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectVectorVariable*, AsVector)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectMatrixVariable*, AsMatrix)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectStringVariable*, AsString)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectClassInstanceVariable*, AsClassInstance)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectInterfaceVariable*, AsInterface)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectShaderResourceVariable*, AsShaderResource)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectUnorderedAccessViewVariable*, AsUnorderedAccessView)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectRenderTargetViewVariable*, AsRenderTargetView)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectDepthStencilViewVariable*, AsDepthStencilView)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectConstantBuffer*, AsConstantBuffer)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectShaderVariable*, AsShader)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectBlendVariable*, AsBlend)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectDepthStencilVariable*, AsDepthStencil)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectRasterizerVariable*, AsRasterizer)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectSamplerVariable*, AsSampler)(THIS) PURE;
-
- STDMETHOD(SetRawValue)(THIS_ CONST void *pData, UINT ByteOffset, UINT ByteCount) PURE;
- STDMETHOD(GetRawValue)(THIS_ void *pData, UINT ByteOffset, UINT ByteCount) PURE;
-
- STDMETHOD(SetMatrix)(THIS_ CONST float *pData) PURE;
- STDMETHOD(GetMatrix)(THIS_ float *pData) PURE;
-
- STDMETHOD(SetMatrixArray)(THIS_ CONST float *pData, UINT Offset, UINT Count) PURE;
- STDMETHOD(GetMatrixArray)(THIS_ float *pData, UINT Offset, UINT Count) PURE;
-
- STDMETHOD(SetMatrixTranspose)(THIS_ CONST float *pData) PURE;
- STDMETHOD(GetMatrixTranspose)(THIS_ float *pData) PURE;
-
- STDMETHOD(SetMatrixTransposeArray)(THIS_ CONST float *pData, UINT Offset, UINT Count) PURE;
- STDMETHOD(GetMatrixTransposeArray)(THIS_ float *pData, UINT Offset, UINT Count) PURE;
-};
-
-//////////////////////////////////////////////////////////////////////////////
-// ID3DX11EffectStringVariable ////////////////////////////////////////////////
-//////////////////////////////////////////////////////////////////////////////
-
-typedef interface ID3DX11EffectStringVariable ID3DX11EffectStringVariable;
-typedef interface ID3DX11EffectStringVariable *LPD3D11EFFECTSTRINGVARIABLE;
-
-// {F355C818-01BE-4653-A7CC-60FFFEDDC76D}
-DEFINE_GUID(IID_ID3DX11EffectStringVariable,
- 0xf355c818, 0x01be, 0x4653, 0xa7, 0xcc, 0x60, 0xff, 0xfe, 0xdd, 0xc7, 0x6d);
-
-#undef INTERFACE
-#define INTERFACE ID3DX11EffectStringVariable
-
-DECLARE_INTERFACE_(ID3DX11EffectStringVariable, ID3DX11EffectVariable)
-{
- STDMETHOD_(BOOL, IsValid)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectType*, GetType)(THIS) PURE;
- STDMETHOD(GetDesc)(THIS_ D3DX11_EFFECT_VARIABLE_DESC *pDesc) PURE;
-
- STDMETHOD_(ID3DX11EffectVariable*, GetAnnotationByIndex)(THIS_ UINT Index) PURE;
- STDMETHOD_(ID3DX11EffectVariable*, GetAnnotationByName)(THIS_ LPCSTR Name) PURE;
-
- STDMETHOD_(ID3DX11EffectVariable*, GetMemberByIndex)(THIS_ UINT Index) PURE;
- STDMETHOD_(ID3DX11EffectVariable*, GetMemberByName)(THIS_ LPCSTR Name) PURE;
- STDMETHOD_(ID3DX11EffectVariable*, GetMemberBySemantic)(THIS_ LPCSTR Semantic) PURE;
-
- STDMETHOD_(ID3DX11EffectVariable*, GetElement)(THIS_ UINT Index) PURE;
-
- STDMETHOD_(ID3DX11EffectConstantBuffer*, GetParentConstantBuffer)(THIS) PURE;
-
- STDMETHOD_(ID3DX11EffectScalarVariable*, AsScalar)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectVectorVariable*, AsVector)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectMatrixVariable*, AsMatrix)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectStringVariable*, AsString)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectClassInstanceVariable*, AsClassInstance)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectInterfaceVariable*, AsInterface)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectShaderResourceVariable*, AsShaderResource)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectUnorderedAccessViewVariable*, AsUnorderedAccessView)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectRenderTargetViewVariable*, AsRenderTargetView)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectDepthStencilViewVariable*, AsDepthStencilView)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectConstantBuffer*, AsConstantBuffer)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectShaderVariable*, AsShader)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectBlendVariable*, AsBlend)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectDepthStencilVariable*, AsDepthStencil)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectRasterizerVariable*, AsRasterizer)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectSamplerVariable*, AsSampler)(THIS) PURE;
-
- STDMETHOD(SetRawValue)(THIS_ CONST void *pData, UINT Offset, UINT Count) PURE;
- STDMETHOD(GetRawValue)(THIS_ void *pData, UINT Offset, UINT Count) PURE;
-
- STDMETHOD(GetString)(THIS_ LPCSTR *ppString) PURE;
- STDMETHOD(GetStringArray)(THIS_ LPCSTR *ppStrings, UINT Offset, UINT Count) PURE;
-};
-
-//////////////////////////////////////////////////////////////////////////////
-// ID3DX11EffectClassInstanceVariable ////////////////////////////////////////
-//////////////////////////////////////////////////////////////////////////////
-
-typedef interface ID3DX11EffectClassInstanceVariable ID3DX11EffectClassInstanceVariable;
-typedef interface ID3DX11EffectClassInstanceVariable *LPD3D11EFFECTCLASSINSTANCEVARIABLE;
-
-// {926A8053-2A39-4DB4-9BDE-CF649ADEBDC1}
-DEFINE_GUID(IID_ID3DX11EffectClassInstanceVariable,
- 0x926a8053, 0x2a39, 0x4db4, 0x9b, 0xde, 0xcf, 0x64, 0x9a, 0xde, 0xbd, 0xc1);
-
-#undef INTERFACE
-#define INTERFACE ID3DX11EffectClassInstanceVariable
-
-DECLARE_INTERFACE_(ID3DX11EffectClassInstanceVariable, ID3DX11EffectVariable)
-{
- STDMETHOD_(BOOL, IsValid)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectType*, GetType)(THIS) PURE;
- STDMETHOD(GetDesc)(THIS_ D3DX11_EFFECT_VARIABLE_DESC *pDesc) PURE;
-
- STDMETHOD_(ID3DX11EffectVariable*, GetAnnotationByIndex)(THIS_ UINT Index) PURE;
- STDMETHOD_(ID3DX11EffectVariable*, GetAnnotationByName)(THIS_ LPCSTR Name) PURE;
-
- STDMETHOD_(ID3DX11EffectVariable*, GetMemberByIndex)(THIS_ UINT Index) PURE;
- STDMETHOD_(ID3DX11EffectVariable*, GetMemberByName)(THIS_ LPCSTR Name) PURE;
- STDMETHOD_(ID3DX11EffectVariable*, GetMemberBySemantic)(THIS_ LPCSTR Semantic) PURE;
-
- STDMETHOD_(ID3DX11EffectVariable*, GetElement)(THIS_ UINT Index) PURE;
-
- STDMETHOD_(ID3DX11EffectConstantBuffer*, GetParentConstantBuffer)(THIS) PURE;
-
- STDMETHOD_(ID3DX11EffectScalarVariable*, AsScalar)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectVectorVariable*, AsVector)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectMatrixVariable*, AsMatrix)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectStringVariable*, AsString)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectClassInstanceVariable*, AsClassInstance)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectInterfaceVariable*, AsInterface)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectUnorderedAccessViewVariable*, AsUnorderedAccessView)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectRenderTargetViewVariable*, AsRenderTargetView)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectDepthStencilViewVariable*, AsDepthStencilView)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectConstantBuffer*, AsConstantBuffer)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectShaderVariable*, AsShader)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectBlendVariable*, AsBlend)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectDepthStencilVariable*, AsDepthStencil)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectRasterizerVariable*, AsRasterizer)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectSamplerVariable*, AsSampler)(THIS) PURE;
-
- STDMETHOD(SetRawValue)(THIS_ CONST void *pData, UINT Offset, UINT Count) PURE;
- STDMETHOD(GetRawValue)(THIS_ void *pData, UINT Offset, UINT Count) PURE;
-
- STDMETHOD(GetClassInstance)(ID3D11ClassInstance** ppClassInstance) PURE;
-};
-
-//////////////////////////////////////////////////////////////////////////////
-// ID3DX11EffectInterfaceVariable ////////////////////////////////////////
-//////////////////////////////////////////////////////////////////////////////
-
-typedef interface ID3DX11EffectInterfaceVariable ID3DX11EffectInterfaceVariable;
-typedef interface ID3DX11EffectInterfaceVariable *LPD3D11EFFECTINTERFACEVARIABLE;
-
-// {516C8CD8-1C80-40A4-B19B-0688792F11A5}
-DEFINE_GUID(IID_ID3DX11EffectInterfaceVariable,
- 0x516c8cd8, 0x1c80, 0x40a4, 0xb1, 0x9b, 0x06, 0x88, 0x79, 0x2f, 0x11, 0xa5);
-
-#undef INTERFACE
-#define INTERFACE ID3DX11EffectInterfaceVariable
-
-DECLARE_INTERFACE_(ID3DX11EffectInterfaceVariable, ID3DX11EffectVariable)
-{
- STDMETHOD_(BOOL, IsValid)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectType*, GetType)(THIS) PURE;
- STDMETHOD(GetDesc)(THIS_ D3DX11_EFFECT_VARIABLE_DESC *pDesc) PURE;
-
- STDMETHOD_(ID3DX11EffectVariable*, GetAnnotationByIndex)(THIS_ UINT Index) PURE;
- STDMETHOD_(ID3DX11EffectVariable*, GetAnnotationByName)(THIS_ LPCSTR Name) PURE;
-
- STDMETHOD_(ID3DX11EffectVariable*, GetMemberByIndex)(THIS_ UINT Index) PURE;
- STDMETHOD_(ID3DX11EffectVariable*, GetMemberByName)(THIS_ LPCSTR Name) PURE;
- STDMETHOD_(ID3DX11EffectVariable*, GetMemberBySemantic)(THIS_ LPCSTR Semantic) PURE;
-
- STDMETHOD_(ID3DX11EffectVariable*, GetElement)(THIS_ UINT Index) PURE;
-
- STDMETHOD_(ID3DX11EffectConstantBuffer*, GetParentConstantBuffer)(THIS) PURE;
-
- STDMETHOD_(ID3DX11EffectScalarVariable*, AsScalar)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectVectorVariable*, AsVector)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectMatrixVariable*, AsMatrix)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectStringVariable*, AsString)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectClassInstanceVariable*, AsClassInstance)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectInterfaceVariable*, AsInterface)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectUnorderedAccessViewVariable*, AsUnorderedAccessView)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectRenderTargetViewVariable*, AsRenderTargetView)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectDepthStencilViewVariable*, AsDepthStencilView)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectConstantBuffer*, AsConstantBuffer)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectShaderVariable*, AsShader)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectBlendVariable*, AsBlend)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectDepthStencilVariable*, AsDepthStencil)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectRasterizerVariable*, AsRasterizer)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectSamplerVariable*, AsSampler)(THIS) PURE;
-
- STDMETHOD(SetRawValue)(THIS_ CONST void *pData, UINT Offset, UINT Count) PURE;
- STDMETHOD(GetRawValue)(THIS_ void *pData, UINT Offset, UINT Count) PURE;
-
- STDMETHOD(SetClassInstance)(ID3DX11EffectClassInstanceVariable *pEffectClassInstance) PURE;
- STDMETHOD(GetClassInstance)(ID3DX11EffectClassInstanceVariable **ppEffectClassInstance) PURE;
-};
-
-//////////////////////////////////////////////////////////////////////////////
-// ID3DX11EffectShaderResourceVariable ////////////////////////////////////////
-//////////////////////////////////////////////////////////////////////////////
-
-typedef interface ID3DX11EffectShaderResourceVariable ID3DX11EffectShaderResourceVariable;
-typedef interface ID3DX11EffectShaderResourceVariable *LPD3D11EFFECTSHADERRESOURCEVARIABLE;
-
-// {350DB233-BBE0-485C-9BFE-C0026B844F89}
-DEFINE_GUID(IID_ID3DX11EffectShaderResourceVariable,
- 0x350db233, 0xbbe0, 0x485c, 0x9b, 0xfe, 0xc0, 0x02, 0x6b, 0x84, 0x4f, 0x89);
-
-#undef INTERFACE
-#define INTERFACE ID3DX11EffectShaderResourceVariable
-
-DECLARE_INTERFACE_(ID3DX11EffectShaderResourceVariable, ID3DX11EffectVariable)
-{
- STDMETHOD_(BOOL, IsValid)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectType*, GetType)(THIS) PURE;
- STDMETHOD(GetDesc)(THIS_ D3DX11_EFFECT_VARIABLE_DESC *pDesc) PURE;
-
- STDMETHOD_(ID3DX11EffectVariable*, GetAnnotationByIndex)(THIS_ UINT Index) PURE;
- STDMETHOD_(ID3DX11EffectVariable*, GetAnnotationByName)(THIS_ LPCSTR Name) PURE;
-
- STDMETHOD_(ID3DX11EffectVariable*, GetMemberByIndex)(THIS_ UINT Index) PURE;
- STDMETHOD_(ID3DX11EffectVariable*, GetMemberByName)(THIS_ LPCSTR Name) PURE;
- STDMETHOD_(ID3DX11EffectVariable*, GetMemberBySemantic)(THIS_ LPCSTR Semantic) PURE;
-
- STDMETHOD_(ID3DX11EffectVariable*, GetElement)(THIS_ UINT Index) PURE;
-
- STDMETHOD_(ID3DX11EffectConstantBuffer*, GetParentConstantBuffer)(THIS) PURE;
-
- STDMETHOD_(ID3DX11EffectScalarVariable*, AsScalar)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectVectorVariable*, AsVector)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectMatrixVariable*, AsMatrix)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectStringVariable*, AsString)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectClassInstanceVariable*, AsClassInstance)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectInterfaceVariable*, AsInterface)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectShaderResourceVariable*, AsShaderResource)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectUnorderedAccessViewVariable*, AsUnorderedAccessView)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectRenderTargetViewVariable*, AsRenderTargetView)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectDepthStencilViewVariable*, AsDepthStencilView)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectConstantBuffer*, AsConstantBuffer)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectShaderVariable*, AsShader)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectBlendVariable*, AsBlend)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectDepthStencilVariable*, AsDepthStencil)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectRasterizerVariable*, AsRasterizer)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectSamplerVariable*, AsSampler)(THIS) PURE;
-
- STDMETHOD(SetRawValue)(THIS_ CONST void *pData, UINT Offset, UINT Count) PURE;
- STDMETHOD(GetRawValue)(THIS_ void *pData, UINT Offset, UINT Count) PURE;
-
- STDMETHOD(SetResource)(THIS_ ID3D11ShaderResourceView *pResource) PURE;
- STDMETHOD(GetResource)(THIS_ ID3D11ShaderResourceView **ppResource) PURE;
-
- STDMETHOD(SetResourceArray)(THIS_ ID3D11ShaderResourceView **ppResources, UINT Offset, UINT Count) PURE;
- STDMETHOD(GetResourceArray)(THIS_ ID3D11ShaderResourceView **ppResources, UINT Offset, UINT Count) PURE;
-};
-
-//////////////////////////////////////////////////////////////////////////////
-// ID3DX11EffectUnorderedAccessViewVariable ////////////////////////////////////////
-//////////////////////////////////////////////////////////////////////////////
-
-typedef interface ID3DX11EffectUnorderedAccessViewVariable ID3DX11EffectUnorderedAccessViewVariable;
-typedef interface ID3DX11EffectUnorderedAccessViewVariable *LPD3D11EFFECTUNORDEREDACCESSVIEWVARIABLE;
-
-// {79B4AC8C-870A-47D2-B05A-8BD5CC3EE6C9}
-DEFINE_GUID(IID_ID3DX11EffectUnorderedAccessViewVariable,
- 0x79b4ac8c, 0x870a, 0x47d2, 0xb0, 0x5a, 0x8b, 0xd5, 0xcc, 0x3e, 0xe6, 0xc9);
-
-#undef INTERFACE
-#define INTERFACE ID3DX11EffectUnorderedAccessViewVariable
-
-DECLARE_INTERFACE_(ID3DX11EffectUnorderedAccessViewVariable, ID3DX11EffectVariable)
-{
- STDMETHOD_(BOOL, IsValid)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectType*, GetType)(THIS) PURE;
- STDMETHOD(GetDesc)(THIS_ D3DX11_EFFECT_VARIABLE_DESC *pDesc) PURE;
-
- STDMETHOD_(ID3DX11EffectVariable*, GetAnnotationByIndex)(THIS_ UINT Index) PURE;
- STDMETHOD_(ID3DX11EffectVariable*, GetAnnotationByName)(THIS_ LPCSTR Name) PURE;
-
- STDMETHOD_(ID3DX11EffectVariable*, GetMemberByIndex)(THIS_ UINT Index) PURE;
- STDMETHOD_(ID3DX11EffectVariable*, GetMemberByName)(THIS_ LPCSTR Name) PURE;
- STDMETHOD_(ID3DX11EffectVariable*, GetMemberBySemantic)(THIS_ LPCSTR Semantic) PURE;
-
- STDMETHOD_(ID3DX11EffectVariable*, GetElement)(THIS_ UINT Index) PURE;
-
- STDMETHOD_(ID3DX11EffectConstantBuffer*, GetParentConstantBuffer)(THIS) PURE;
-
- STDMETHOD_(ID3DX11EffectScalarVariable*, AsScalar)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectVectorVariable*, AsVector)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectMatrixVariable*, AsMatrix)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectStringVariable*, AsString)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectClassInstanceVariable*, AsClassInstance)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectInterfaceVariable*, AsInterface)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectShaderResourceVariable*, AsShaderResource)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectUnorderedAccessViewVariable*, AsUnorderedAccessView)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectRenderTargetViewVariable*, AsRenderTargetView)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectDepthStencilViewVariable*, AsDepthStencilView)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectConstantBuffer*, AsConstantBuffer)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectShaderVariable*, AsShader)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectBlendVariable*, AsBlend)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectDepthStencilVariable*, AsDepthStencil)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectRasterizerVariable*, AsRasterizer)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectSamplerVariable*, AsSampler)(THIS) PURE;
-
- STDMETHOD(SetRawValue)(THIS_ CONST void *pData, UINT Offset, UINT Count) PURE;
- STDMETHOD(GetRawValue)(THIS_ void *pData, UINT Offset, UINT Count) PURE;
-
- STDMETHOD(SetUnorderedAccessView)(THIS_ ID3D11UnorderedAccessView *pResource) PURE;
- STDMETHOD(GetUnorderedAccessView)(THIS_ ID3D11UnorderedAccessView **ppResource) PURE;
-
- STDMETHOD(SetUnorderedAccessViewArray)(THIS_ ID3D11UnorderedAccessView **ppResources, UINT Offset, UINT Count) PURE;
- STDMETHOD(GetUnorderedAccessViewArray)(THIS_ ID3D11UnorderedAccessView **ppResources, UINT Offset, UINT Count) PURE;
-};
-
-//////////////////////////////////////////////////////////////////////////////
-// ID3DX11EffectRenderTargetViewVariable //////////////////////////////////////
-//////////////////////////////////////////////////////////////////////////////
-
-typedef interface ID3DX11EffectRenderTargetViewVariable ID3DX11EffectRenderTargetViewVariable;
-typedef interface ID3DX11EffectRenderTargetViewVariable *LPD3D11EFFECTRENDERTARGETVIEWVARIABLE;
-
-// {D5066909-F40C-43F8-9DB5-057C2A208552}
-DEFINE_GUID(IID_ID3DX11EffectRenderTargetViewVariable,
- 0xd5066909, 0xf40c, 0x43f8, 0x9d, 0xb5, 0x05, 0x7c, 0x2a, 0x20, 0x85, 0x52);
-
-#undef INTERFACE
-#define INTERFACE ID3DX11EffectRenderTargetViewVariable
-
-DECLARE_INTERFACE_(ID3DX11EffectRenderTargetViewVariable, ID3DX11EffectVariable)
-{
- STDMETHOD_(BOOL, IsValid)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectType*, GetType)(THIS) PURE;
- STDMETHOD(GetDesc)(THIS_ D3DX11_EFFECT_VARIABLE_DESC *pDesc) PURE;
-
- STDMETHOD_(ID3DX11EffectVariable*, GetAnnotationByIndex)(THIS_ UINT Index) PURE;
- STDMETHOD_(ID3DX11EffectVariable*, GetAnnotationByName)(THIS_ LPCSTR Name) PURE;
-
- STDMETHOD_(ID3DX11EffectVariable*, GetMemberByIndex)(THIS_ UINT Index) PURE;
- STDMETHOD_(ID3DX11EffectVariable*, GetMemberByName)(THIS_ LPCSTR Name) PURE;
- STDMETHOD_(ID3DX11EffectVariable*, GetMemberBySemantic)(THIS_ LPCSTR Semantic) PURE;
-
- STDMETHOD_(ID3DX11EffectVariable*, GetElement)(THIS_ UINT Index) PURE;
-
- STDMETHOD_(ID3DX11EffectConstantBuffer*, GetParentConstantBuffer)(THIS) PURE;
-
- STDMETHOD_(ID3DX11EffectScalarVariable*, AsScalar)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectVectorVariable*, AsVector)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectMatrixVariable*, AsMatrix)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectStringVariable*, AsString)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectClassInstanceVariable*, AsClassInstance)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectInterfaceVariable*, AsInterface)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectShaderResourceVariable*, AsShaderResource)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectUnorderedAccessViewVariable*, AsUnorderedAccessView)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectRenderTargetViewVariable*, AsRenderTargetView)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectDepthStencilViewVariable*, AsDepthStencilView)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectConstantBuffer*, AsConstantBuffer)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectShaderVariable*, AsShader)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectBlendVariable*, AsBlend)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectDepthStencilVariable*, AsDepthStencil)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectRasterizerVariable*, AsRasterizer)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectSamplerVariable*, AsSampler)(THIS) PURE;
-
- STDMETHOD(SetRawValue)(THIS_ CONST void *pData, UINT Offset, UINT Count) PURE;
- STDMETHOD(GetRawValue)(THIS_ void *pData, UINT Offset, UINT Count) PURE;
-
- STDMETHOD(SetRenderTarget)(THIS_ ID3D11RenderTargetView *pResource) PURE;
- STDMETHOD(GetRenderTarget)(THIS_ ID3D11RenderTargetView **ppResource) PURE;
-
- STDMETHOD(SetRenderTargetArray)(THIS_ ID3D11RenderTargetView **ppResources, UINT Offset, UINT Count) PURE;
- STDMETHOD(GetRenderTargetArray)(THIS_ ID3D11RenderTargetView **ppResources, UINT Offset, UINT Count) PURE;
-};
-
-//////////////////////////////////////////////////////////////////////////////
-// ID3DX11EffectDepthStencilViewVariable //////////////////////////////////////
-//////////////////////////////////////////////////////////////////////////////
-
-typedef interface ID3DX11EffectDepthStencilViewVariable ID3DX11EffectDepthStencilViewVariable;
-typedef interface ID3DX11EffectDepthStencilViewVariable *LPD3D11EFFECTDEPTHSTENCILVIEWVARIABLE;
-
-// {33C648AC-2E9E-4A2E-9CD6-DE31ACC5B347}
-DEFINE_GUID(IID_ID3DX11EffectDepthStencilViewVariable,
- 0x33c648ac, 0x2e9e, 0x4a2e, 0x9c, 0xd6, 0xde, 0x31, 0xac, 0xc5, 0xb3, 0x47);
-
-#undef INTERFACE
-#define INTERFACE ID3DX11EffectDepthStencilViewVariable
-
-DECLARE_INTERFACE_(ID3DX11EffectDepthStencilViewVariable, ID3DX11EffectVariable)
-{
- STDMETHOD_(BOOL, IsValid)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectType*, GetType)(THIS) PURE;
- STDMETHOD(GetDesc)(THIS_ D3DX11_EFFECT_VARIABLE_DESC *pDesc) PURE;
-
- STDMETHOD_(ID3DX11EffectVariable*, GetAnnotationByIndex)(THIS_ UINT Index) PURE;
- STDMETHOD_(ID3DX11EffectVariable*, GetAnnotationByName)(THIS_ LPCSTR Name) PURE;
-
- STDMETHOD_(ID3DX11EffectVariable*, GetMemberByIndex)(THIS_ UINT Index) PURE;
- STDMETHOD_(ID3DX11EffectVariable*, GetMemberByName)(THIS_ LPCSTR Name) PURE;
- STDMETHOD_(ID3DX11EffectVariable*, GetMemberBySemantic)(THIS_ LPCSTR Semantic) PURE;
-
- STDMETHOD_(ID3DX11EffectVariable*, GetElement)(THIS_ UINT Index) PURE;
-
- STDMETHOD_(ID3DX11EffectConstantBuffer*, GetParentConstantBuffer)(THIS) PURE;
-
- STDMETHOD_(ID3DX11EffectScalarVariable*, AsScalar)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectVectorVariable*, AsVector)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectMatrixVariable*, AsMatrix)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectStringVariable*, AsString)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectClassInstanceVariable*, AsClassInstance)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectInterfaceVariable*, AsInterface)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectShaderResourceVariable*, AsShaderResource)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectUnorderedAccessViewVariable*, AsUnorderedAccessView)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectRenderTargetViewVariable*, AsRenderTargetView)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectDepthStencilViewVariable*, AsDepthStencilView)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectConstantBuffer*, AsConstantBuffer)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectShaderVariable*, AsShader)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectBlendVariable*, AsBlend)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectDepthStencilVariable*, AsDepthStencil)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectRasterizerVariable*, AsRasterizer)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectSamplerVariable*, AsSampler)(THIS) PURE;
-
- STDMETHOD(SetRawValue)(THIS_ CONST void *pData, UINT Offset, UINT Count) PURE;
- STDMETHOD(GetRawValue)(THIS_ void *pData, UINT Offset, UINT Count) PURE;
-
- STDMETHOD(SetDepthStencil)(THIS_ ID3D11DepthStencilView *pResource) PURE;
- STDMETHOD(GetDepthStencil)(THIS_ ID3D11DepthStencilView **ppResource) PURE;
-
- STDMETHOD(SetDepthStencilArray)(THIS_ ID3D11DepthStencilView **ppResources, UINT Offset, UINT Count) PURE;
- STDMETHOD(GetDepthStencilArray)(THIS_ ID3D11DepthStencilView **ppResources, UINT Offset, UINT Count) PURE;
-};
-
-//////////////////////////////////////////////////////////////////////////////
-// ID3DX11EffectConstantBuffer ////////////////////////////////////////////////
-//////////////////////////////////////////////////////////////////////////////
-
-typedef interface ID3DX11EffectConstantBuffer ID3DX11EffectConstantBuffer;
-typedef interface ID3DX11EffectConstantBuffer *LPD3D11EFFECTCONSTANTBUFFER;
-
-// {2CB6C733-82D2-4000-B3DA-6219D9A99BF2}
-DEFINE_GUID(IID_ID3DX11EffectConstantBuffer,
- 0x2cb6c733, 0x82d2, 0x4000, 0xb3, 0xda, 0x62, 0x19, 0xd9, 0xa9, 0x9b, 0xf2);
-
-#undef INTERFACE
-#define INTERFACE ID3DX11EffectConstantBuffer
-
-DECLARE_INTERFACE_(ID3DX11EffectConstantBuffer, ID3DX11EffectVariable)
-{
- STDMETHOD_(ID3DX11EffectType*, GetType)(THIS) PURE;
- STDMETHOD(GetDesc)(THIS_ D3DX11_EFFECT_VARIABLE_DESC *pDesc) PURE;
-
- STDMETHOD_(ID3DX11EffectVariable*, GetAnnotationByIndex)(THIS_ UINT Index) PURE;
- STDMETHOD_(ID3DX11EffectVariable*, GetAnnotationByName)(THIS_ LPCSTR Name) PURE;
-
- STDMETHOD_(ID3DX11EffectVariable*, GetMemberByIndex)(THIS_ UINT Index) PURE;
- STDMETHOD_(ID3DX11EffectVariable*, GetMemberByName)(THIS_ LPCSTR Name) PURE;
- STDMETHOD_(ID3DX11EffectVariable*, GetMemberBySemantic)(THIS_ LPCSTR Semantic) PURE;
-
- STDMETHOD_(ID3DX11EffectVariable*, GetElement)(THIS_ UINT Index) PURE;
-
- STDMETHOD_(ID3DX11EffectConstantBuffer*, GetParentConstantBuffer)(THIS) PURE;
-
- STDMETHOD_(ID3DX11EffectScalarVariable*, AsScalar)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectVectorVariable*, AsVector)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectMatrixVariable*, AsMatrix)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectStringVariable*, AsString)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectClassInstanceVariable*, AsClassInstance)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectInterfaceVariable*, AsInterface)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectShaderResourceVariable*, AsShaderResource)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectUnorderedAccessViewVariable*, AsUnorderedAccessView)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectRenderTargetViewVariable*, AsRenderTargetView)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectDepthStencilViewVariable*, AsDepthStencilView)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectConstantBuffer*, AsConstantBuffer)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectShaderVariable*, AsShader)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectBlendVariable*, AsBlend)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectDepthStencilVariable*, AsDepthStencil)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectRasterizerVariable*, AsRasterizer)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectSamplerVariable*, AsSampler)(THIS) PURE;
-
- STDMETHOD(SetRawValue)(THIS_ CONST void *pData, UINT Offset, UINT Count) PURE;
- STDMETHOD(GetRawValue)(THIS_ void *pData, UINT Offset, UINT Count) PURE;
-
- STDMETHOD(SetConstantBuffer)(THIS_ ID3D11Buffer *pConstantBuffer) PURE;
- STDMETHOD(UndoSetConstantBuffer)(THIS) PURE;
- STDMETHOD(GetConstantBuffer)(THIS_ ID3D11Buffer **ppConstantBuffer) PURE;
-
- STDMETHOD(SetTextureBuffer)(THIS_ ID3D11ShaderResourceView *pTextureBuffer) PURE;
- STDMETHOD(UndoSetTextureBuffer)(THIS) PURE;
- STDMETHOD(GetTextureBuffer)(THIS_ ID3D11ShaderResourceView **ppTextureBuffer) PURE;
-};
-
-//////////////////////////////////////////////////////////////////////////////
-// ID3DX11EffectShaderVariable ////////////////////////////////////////////////
-//////////////////////////////////////////////////////////////////////////////
-
-//----------------------------------------------------------------------------
-// D3DX11_EFFECT_SHADER_DESC:
-//
-// Retrieved by ID3DX11EffectShaderVariable::GetShaderDesc()
-//----------------------------------------------------------------------------
-
-typedef struct _D3DX11_EFFECT_SHADER_DESC
-{
- CONST BYTE *pInputSignature; // Passed into CreateInputLayout,
- // valid on VS and GS only
-
- BOOL IsInline; // Is this an anonymous shader variable
- // resulting from an inline shader assignment?
-
-
- // -- The following fields are not valid after Optimize() --
- CONST BYTE *pBytecode; // Shader bytecode
- UINT BytecodeLength;
-
- LPCSTR SODecls[D3D11_SO_STREAM_COUNT]; // Stream out declaration string (for GS with SO)
- UINT RasterizedStream;
-
- UINT NumInputSignatureEntries; // Number of entries in the input signature
- UINT NumOutputSignatureEntries; // Number of entries in the output signature
- UINT NumPatchConstantSignatureEntries; // Number of entries in the patch constant signature
-} D3DX11_EFFECT_SHADER_DESC;
-
-
-typedef interface ID3DX11EffectShaderVariable ID3DX11EffectShaderVariable;
-typedef interface ID3DX11EffectShaderVariable *LPD3D11EFFECTSHADERVARIABLE;
-
-// {7508B344-020A-4EC7-9118-62CDD36C88D7}
-DEFINE_GUID(IID_ID3DX11EffectShaderVariable,
- 0x7508b344, 0x020a, 0x4ec7, 0x91, 0x18, 0x62, 0xcd, 0xd3, 0x6c, 0x88, 0xd7);
-
-#undef INTERFACE
-#define INTERFACE ID3DX11EffectShaderVariable
-
-DECLARE_INTERFACE_(ID3DX11EffectShaderVariable, ID3DX11EffectVariable)
-{
- STDMETHOD_(ID3DX11EffectType*, GetType)(THIS) PURE;
- STDMETHOD(GetDesc)(THIS_ D3DX11_EFFECT_VARIABLE_DESC *pDesc) PURE;
-
- STDMETHOD_(ID3DX11EffectVariable*, GetAnnotationByIndex)(THIS_ UINT Index) PURE;
- STDMETHOD_(ID3DX11EffectVariable*, GetAnnotationByName)(THIS_ LPCSTR Name) PURE;
-
- STDMETHOD_(ID3DX11EffectVariable*, GetMemberByIndex)(THIS_ UINT Index) PURE;
- STDMETHOD_(ID3DX11EffectVariable*, GetMemberByName)(THIS_ LPCSTR Name) PURE;
- STDMETHOD_(ID3DX11EffectVariable*, GetMemberBySemantic)(THIS_ LPCSTR Semantic) PURE;
-
- STDMETHOD_(ID3DX11EffectVariable*, GetElement)(THIS_ UINT Index) PURE;
-
- STDMETHOD_(ID3DX11EffectConstantBuffer*, GetParentConstantBuffer)(THIS) PURE;
-
- STDMETHOD_(ID3DX11EffectScalarVariable*, AsScalar)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectVectorVariable*, AsVector)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectMatrixVariable*, AsMatrix)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectStringVariable*, AsString)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectClassInstanceVariable*, AsClassInstance)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectInterfaceVariable*, AsInterface)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectShaderResourceVariable*, AsShaderResource)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectUnorderedAccessViewVariable*, AsUnorderedAccessView)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectRenderTargetViewVariable*, AsRenderTargetView)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectDepthStencilViewVariable*, AsDepthStencilView)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectConstantBuffer*, AsConstantBuffer)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectShaderVariable*, AsShader)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectBlendVariable*, AsBlend)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectDepthStencilVariable*, AsDepthStencil)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectRasterizerVariable*, AsRasterizer)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectSamplerVariable*, AsSampler)(THIS) PURE;
-
- STDMETHOD(SetRawValue)(THIS_ CONST void *pData, UINT Offset, UINT Count) PURE;
- STDMETHOD(GetRawValue)(THIS_ void *pData, UINT Offset, UINT Count) PURE;
-
- STDMETHOD(GetShaderDesc)(THIS_ UINT ShaderIndex, D3DX11_EFFECT_SHADER_DESC *pDesc) PURE;
-
- STDMETHOD(GetVertexShader)(THIS_ UINT ShaderIndex, ID3D11VertexShader **ppVS) PURE;
- STDMETHOD(GetGeometryShader)(THIS_ UINT ShaderIndex, ID3D11GeometryShader **ppGS) PURE;
- STDMETHOD(GetPixelShader)(THIS_ UINT ShaderIndex, ID3D11PixelShader **ppPS) PURE;
- STDMETHOD(GetHullShader)(THIS_ UINT ShaderIndex, ID3D11HullShader **ppPS) PURE;
- STDMETHOD(GetDomainShader)(THIS_ UINT ShaderIndex, ID3D11DomainShader **ppPS) PURE;
- STDMETHOD(GetComputeShader)(THIS_ UINT ShaderIndex, ID3D11ComputeShader **ppPS) PURE;
-
- STDMETHOD(GetInputSignatureElementDesc)(THIS_ UINT ShaderIndex, UINT Element, D3D11_SIGNATURE_PARAMETER_DESC *pDesc) PURE;
- STDMETHOD(GetOutputSignatureElementDesc)(THIS_ UINT ShaderIndex, UINT Element, D3D11_SIGNATURE_PARAMETER_DESC *pDesc) PURE;
- STDMETHOD(GetPatchConstantSignatureElementDesc)(THIS_ UINT ShaderIndex, UINT Element, D3D11_SIGNATURE_PARAMETER_DESC *pDesc) PURE;
-};
-
-//////////////////////////////////////////////////////////////////////////////
-// ID3DX11EffectBlendVariable /////////////////////////////////////////////////
-//////////////////////////////////////////////////////////////////////////////
-
-typedef interface ID3DX11EffectBlendVariable ID3DX11EffectBlendVariable;
-typedef interface ID3DX11EffectBlendVariable *LPD3D11EFFECTBLENDVARIABLE;
-
-// {D664F4D7-3B81-4805-B277-C1DF58C39F53}
-DEFINE_GUID(IID_ID3DX11EffectBlendVariable,
- 0xd664f4d7, 0x3b81, 0x4805, 0xb2, 0x77, 0xc1, 0xdf, 0x58, 0xc3, 0x9f, 0x53);
-
-#undef INTERFACE
-#define INTERFACE ID3DX11EffectBlendVariable
-
-DECLARE_INTERFACE_(ID3DX11EffectBlendVariable, ID3DX11EffectVariable)
-{
- STDMETHOD_(ID3DX11EffectType*, GetType)(THIS) PURE;
- STDMETHOD(GetDesc)(THIS_ D3DX11_EFFECT_VARIABLE_DESC *pDesc) PURE;
-
- STDMETHOD_(ID3DX11EffectVariable*, GetAnnotationByIndex)(THIS_ UINT Index) PURE;
- STDMETHOD_(ID3DX11EffectVariable*, GetAnnotationByName)(THIS_ LPCSTR Name) PURE;
-
- STDMETHOD_(ID3DX11EffectVariable*, GetMemberByIndex)(THIS_ UINT Index) PURE;
- STDMETHOD_(ID3DX11EffectVariable*, GetMemberByName)(THIS_ LPCSTR Name) PURE;
- STDMETHOD_(ID3DX11EffectVariable*, GetMemberBySemantic)(THIS_ LPCSTR Semantic) PURE;
-
- STDMETHOD_(ID3DX11EffectVariable*, GetElement)(THIS_ UINT Index) PURE;
-
- STDMETHOD_(ID3DX11EffectConstantBuffer*, GetParentConstantBuffer)(THIS) PURE;
-
- STDMETHOD_(ID3DX11EffectScalarVariable*, AsScalar)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectVectorVariable*, AsVector)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectMatrixVariable*, AsMatrix)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectStringVariable*, AsString)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectClassInstanceVariable*, AsClassInstance)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectInterfaceVariable*, AsInterface)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectShaderResourceVariable*, AsShaderResource)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectUnorderedAccessViewVariable*, AsUnorderedAccessView)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectRenderTargetViewVariable*, AsRenderTargetView)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectDepthStencilViewVariable*, AsDepthStencilView)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectConstantBuffer*, AsConstantBuffer)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectShaderVariable*, AsShader)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectBlendVariable*, AsBlend)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectDepthStencilVariable*, AsDepthStencil)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectRasterizerVariable*, AsRasterizer)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectSamplerVariable*, AsSampler)(THIS) PURE;
-
- STDMETHOD(SetRawValue)(THIS_ CONST void *pData, UINT Offset, UINT Count) PURE;
- STDMETHOD(GetRawValue)(THIS_ void *pData, UINT Offset, UINT Count) PURE;
-
- STDMETHOD(GetBlendState)(THIS_ UINT Index, ID3D11BlendState **ppBlendState) PURE;
- STDMETHOD(SetBlendState)(THIS_ UINT Index, ID3D11BlendState *pBlendState) PURE;
- STDMETHOD(UndoSetBlendState)(THIS_ UINT Index) PURE;
- STDMETHOD(GetBackingStore)(THIS_ UINT Index, D3D11_BLEND_DESC *pBlendDesc) PURE;
-};
-
-//////////////////////////////////////////////////////////////////////////////
-// ID3DX11EffectDepthStencilVariable //////////////////////////////////////////
-//////////////////////////////////////////////////////////////////////////////
-
-typedef interface ID3DX11EffectDepthStencilVariable ID3DX11EffectDepthStencilVariable;
-typedef interface ID3DX11EffectDepthStencilVariable *LPD3D11EFFECTDEPTHSTENCILVARIABLE;
-
-// {69B5751B-61A5-48E5-BD41-D93988111563}
-DEFINE_GUID(IID_ID3DX11EffectDepthStencilVariable,
- 0x69b5751b, 0x61a5, 0x48e5, 0xbd, 0x41, 0xd9, 0x39, 0x88, 0x11, 0x15, 0x63);
-
-#undef INTERFACE
-#define INTERFACE ID3DX11EffectDepthStencilVariable
-
-DECLARE_INTERFACE_(ID3DX11EffectDepthStencilVariable, ID3DX11EffectVariable)
-{
- STDMETHOD_(ID3DX11EffectType*, GetType)(THIS) PURE;
- STDMETHOD(GetDesc)(THIS_ D3DX11_EFFECT_VARIABLE_DESC *pDesc) PURE;
-
- STDMETHOD_(ID3DX11EffectVariable*, GetAnnotationByIndex)(THIS_ UINT Index) PURE;
- STDMETHOD_(ID3DX11EffectVariable*, GetAnnotationByName)(THIS_ LPCSTR Name) PURE;
-
- STDMETHOD_(ID3DX11EffectVariable*, GetMemberByIndex)(THIS_ UINT Index) PURE;
- STDMETHOD_(ID3DX11EffectVariable*, GetMemberByName)(THIS_ LPCSTR Name) PURE;
- STDMETHOD_(ID3DX11EffectVariable*, GetMemberBySemantic)(THIS_ LPCSTR Semantic) PURE;
-
- STDMETHOD_(ID3DX11EffectVariable*, GetElement)(THIS_ UINT Index) PURE;
-
- STDMETHOD_(ID3DX11EffectConstantBuffer*, GetParentConstantBuffer)(THIS) PURE;
-
- STDMETHOD_(ID3DX11EffectScalarVariable*, AsScalar)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectVectorVariable*, AsVector)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectMatrixVariable*, AsMatrix)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectStringVariable*, AsString)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectClassInstanceVariable*, AsClassInstance)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectInterfaceVariable*, AsInterface)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectShaderResourceVariable*, AsShaderResource)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectUnorderedAccessViewVariable*, AsUnorderedAccessView)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectRenderTargetViewVariable*, AsRenderTargetView)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectDepthStencilViewVariable*, AsDepthStencilView)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectConstantBuffer*, AsConstantBuffer)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectShaderVariable*, AsShader)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectBlendVariable*, AsBlend)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectDepthStencilVariable*, AsDepthStencil)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectRasterizerVariable*, AsRasterizer)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectSamplerVariable*, AsSampler)(THIS) PURE;
-
- STDMETHOD(SetRawValue)(THIS_ CONST void *pData, UINT Offset, UINT Count) PURE;
- STDMETHOD(GetRawValue)(THIS_ void *pData, UINT Offset, UINT Count) PURE;
-
- STDMETHOD(GetDepthStencilState)(THIS_ UINT Index, ID3D11DepthStencilState **ppDepthStencilState) PURE;
- STDMETHOD(SetDepthStencilState)(THIS_ UINT Index, ID3D11DepthStencilState *pDepthStencilState) PURE;
- STDMETHOD(UndoSetDepthStencilState)(THIS_ UINT Index) PURE;
- STDMETHOD(GetBackingStore)(THIS_ UINT Index, D3D11_DEPTH_STENCIL_DESC *pDepthStencilDesc) PURE;
-};
-
-//////////////////////////////////////////////////////////////////////////////
-// ID3DX11EffectRasterizerVariable ////////////////////////////////////////////
-//////////////////////////////////////////////////////////////////////////////
-
-typedef interface ID3DX11EffectRasterizerVariable ID3DX11EffectRasterizerVariable;
-typedef interface ID3DX11EffectRasterizerVariable *LPD3D11EFFECTRASTERIZERVARIABLE;
-
-// {53A262F6-5F74-4151-A132-E3DD19A62C9D}
-DEFINE_GUID(IID_ID3DX11EffectRasterizerVariable,
- 0x53a262f6, 0x5f74, 0x4151, 0xa1, 0x32, 0xe3, 0xdd, 0x19, 0xa6, 0x2c, 0x9d);
-
-#undef INTERFACE
-#define INTERFACE ID3DX11EffectRasterizerVariable
-
-DECLARE_INTERFACE_(ID3DX11EffectRasterizerVariable, ID3DX11EffectVariable)
-{
- STDMETHOD_(ID3DX11EffectType*, GetType)(THIS) PURE;
- STDMETHOD(GetDesc)(THIS_ D3DX11_EFFECT_VARIABLE_DESC *pDesc) PURE;
-
- STDMETHOD_(ID3DX11EffectVariable*, GetAnnotationByIndex)(THIS_ UINT Index) PURE;
- STDMETHOD_(ID3DX11EffectVariable*, GetAnnotationByName)(THIS_ LPCSTR Name) PURE;
-
- STDMETHOD_(ID3DX11EffectVariable*, GetMemberByIndex)(THIS_ UINT Index) PURE;
- STDMETHOD_(ID3DX11EffectVariable*, GetMemberByName)(THIS_ LPCSTR Name) PURE;
- STDMETHOD_(ID3DX11EffectVariable*, GetMemberBySemantic)(THIS_ LPCSTR Semantic) PURE;
-
- STDMETHOD_(ID3DX11EffectVariable*, GetElement)(THIS_ UINT Index) PURE;
-
- STDMETHOD_(ID3DX11EffectConstantBuffer*, GetParentConstantBuffer)(THIS) PURE;
-
- STDMETHOD_(ID3DX11EffectScalarVariable*, AsScalar)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectVectorVariable*, AsVector)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectMatrixVariable*, AsMatrix)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectStringVariable*, AsString)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectClassInstanceVariable*, AsClassInstance)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectInterfaceVariable*, AsInterface)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectShaderResourceVariable*, AsShaderResource)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectUnorderedAccessViewVariable*, AsUnorderedAccessView)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectRenderTargetViewVariable*, AsRenderTargetView)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectDepthStencilViewVariable*, AsDepthStencilView)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectConstantBuffer*, AsConstantBuffer)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectShaderVariable*, AsShader)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectBlendVariable*, AsBlend)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectDepthStencilVariable*, AsDepthStencil)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectRasterizerVariable*, AsRasterizer)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectSamplerVariable*, AsSampler)(THIS) PURE;
-
- STDMETHOD(SetRawValue)(THIS_ CONST void *pData, UINT Offset, UINT Count) PURE;
- STDMETHOD(GetRawValue)(THIS_ void *pData, UINT Offset, UINT Count) PURE;
-
- STDMETHOD(GetRasterizerState)(THIS_ UINT Index, ID3D11RasterizerState **ppRasterizerState) PURE;
- STDMETHOD(SetRasterizerState)(THIS_ UINT Index, ID3D11RasterizerState *pRasterizerState) PURE;
- STDMETHOD(UndoSetRasterizerState)(THIS_ UINT Index) PURE;
- STDMETHOD(GetBackingStore)(THIS_ UINT Index, D3D11_RASTERIZER_DESC *pRasterizerDesc) PURE;
-};
-
-//////////////////////////////////////////////////////////////////////////////
-// ID3DX11EffectSamplerVariable ///////////////////////////////////////////////
-//////////////////////////////////////////////////////////////////////////////
-
-typedef interface ID3DX11EffectSamplerVariable ID3DX11EffectSamplerVariable;
-typedef interface ID3DX11EffectSamplerVariable *LPD3D11EFFECTSAMPLERVARIABLE;
-
-// {C6402E55-1095-4D95-8931-F92660513DD9}
-DEFINE_GUID(IID_ID3DX11EffectSamplerVariable,
- 0xc6402e55, 0x1095, 0x4d95, 0x89, 0x31, 0xf9, 0x26, 0x60, 0x51, 0x3d, 0xd9);
-
-#undef INTERFACE
-#define INTERFACE ID3DX11EffectSamplerVariable
-
-DECLARE_INTERFACE_(ID3DX11EffectSamplerVariable, ID3DX11EffectVariable)
-{
- STDMETHOD_(ID3DX11EffectType*, GetType)(THIS) PURE;
- STDMETHOD(GetDesc)(THIS_ D3DX11_EFFECT_VARIABLE_DESC *pDesc) PURE;
-
- STDMETHOD_(ID3DX11EffectVariable*, GetAnnotationByIndex)(THIS_ UINT Index) PURE;
- STDMETHOD_(ID3DX11EffectVariable*, GetAnnotationByName)(THIS_ LPCSTR Name) PURE;
-
- STDMETHOD_(ID3DX11EffectVariable*, GetMemberByIndex)(THIS_ UINT Index) PURE;
- STDMETHOD_(ID3DX11EffectVariable*, GetMemberByName)(THIS_ LPCSTR Name) PURE;
- STDMETHOD_(ID3DX11EffectVariable*, GetMemberBySemantic)(THIS_ LPCSTR Semantic) PURE;
-
- STDMETHOD_(ID3DX11EffectVariable*, GetElement)(THIS_ UINT Index) PURE;
-
- STDMETHOD_(ID3DX11EffectConstantBuffer*, GetParentConstantBuffer)(THIS) PURE;
-
- STDMETHOD_(ID3DX11EffectScalarVariable*, AsScalar)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectVectorVariable*, AsVector)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectMatrixVariable*, AsMatrix)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectStringVariable*, AsString)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectClassInstanceVariable*, AsClassInstance)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectInterfaceVariable*, AsInterface)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectShaderResourceVariable*, AsShaderResource)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectUnorderedAccessViewVariable*, AsUnorderedAccessView)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectRenderTargetViewVariable*, AsRenderTargetView)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectDepthStencilViewVariable*, AsDepthStencilView)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectConstantBuffer*, AsConstantBuffer)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectShaderVariable*, AsShader)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectBlendVariable*, AsBlend)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectDepthStencilVariable*, AsDepthStencil)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectRasterizerVariable*, AsRasterizer)(THIS) PURE;
- STDMETHOD_(ID3DX11EffectSamplerVariable*, AsSampler)(THIS) PURE;
-
- STDMETHOD(SetRawValue)(THIS_ CONST void *pData, UINT Offset, UINT Count) PURE;
- STDMETHOD(GetRawValue)(THIS_ void *pData, UINT Offset, UINT Count) PURE;
-
- STDMETHOD(GetSampler)(THIS_ UINT Index, ID3D11SamplerState **ppSampler) PURE;
- STDMETHOD(SetSampler)(THIS_ UINT Index, ID3D11SamplerState *pSampler) PURE;
- STDMETHOD(UndoSetSampler)(THIS_ UINT Index) PURE;
- STDMETHOD(GetBackingStore)(THIS_ UINT Index, D3D11_SAMPLER_DESC *pSamplerDesc) PURE;
-};
-
-//////////////////////////////////////////////////////////////////////////////
-// ID3DX11EffectPass //////////////////////////////////////////////////////////
-//////////////////////////////////////////////////////////////////////////////
-
-//----------------------------------------------------------------------------
-// D3DX11_PASS_DESC:
-//
-// Retrieved by ID3DX11EffectPass::GetDesc()
-//----------------------------------------------------------------------------
-
-typedef struct _D3DX11_PASS_DESC
-{
- LPCSTR Name; // Name of this pass (NULL if not anonymous)
- UINT Annotations; // Number of annotations on this pass
-
- BYTE *pIAInputSignature; // Signature from VS or GS (if there is no VS)
- // or NULL if neither exists
- SIZE_T IAInputSignatureSize; // Singature size in bytes
-
- UINT StencilRef; // Specified in SetDepthStencilState()
- UINT SampleMask; // Specified in SetBlendState()
- FLOAT BlendFactor[4]; // Specified in SetBlendState()
-} D3DX11_PASS_DESC;
-
-//----------------------------------------------------------------------------
-// D3DX11_PASS_SHADER_DESC:
-//
-// Retrieved by ID3DX11EffectPass::Get**ShaderDesc()
-//----------------------------------------------------------------------------
-
-typedef struct _D3DX11_PASS_SHADER_DESC
-{
- ID3DX11EffectShaderVariable *pShaderVariable; // The variable that this shader came from.
- // If this is an inline shader assignment,
- // the returned interface will be an
- // anonymous shader variable, which is
- // not retrievable any other way. It's
- // name in the variable description will
- // be "$Anonymous".
- // If there is no assignment of this type in
- // the pass block, pShaderVariable != NULL,
- // but pShaderVariable->IsValid() == FALSE.
-
- UINT ShaderIndex; // The element of pShaderVariable (if an array)
- // or 0 if not applicable
-} D3DX11_PASS_SHADER_DESC;
-
-typedef interface ID3DX11EffectPass ID3DX11EffectPass;
-typedef interface ID3DX11EffectPass *LPD3D11EFFECTPASS;
-
-// {3437CEC4-4AC1-4D87-8916-F4BD5A41380C}
-DEFINE_GUID(IID_ID3DX11EffectPass,
- 0x3437cec4, 0x4ac1, 0x4d87, 0x89, 0x16, 0xf4, 0xbd, 0x5a, 0x41, 0x38, 0x0c);
-
-#undef INTERFACE
-#define INTERFACE ID3DX11EffectPass
-
-DECLARE_INTERFACE(ID3DX11EffectPass)
-{
- STDMETHOD_(BOOL, IsValid)(THIS) PURE;
- STDMETHOD(GetDesc)(THIS_ D3DX11_PASS_DESC *pDesc) PURE;
-
- STDMETHOD(GetVertexShaderDesc)(THIS_ D3DX11_PASS_SHADER_DESC *pDesc) PURE;
- STDMETHOD(GetGeometryShaderDesc)(THIS_ D3DX11_PASS_SHADER_DESC *pDesc) PURE;
- STDMETHOD(GetPixelShaderDesc)(THIS_ D3DX11_PASS_SHADER_DESC *pDesc) PURE;
- STDMETHOD(GetHullShaderDesc)(THIS_ D3DX11_PASS_SHADER_DESC *pDesc) PURE;
- STDMETHOD(GetDomainShaderDesc)(THIS_ D3DX11_PASS_SHADER_DESC *pDesc) PURE;
- STDMETHOD(GetComputeShaderDesc)(THIS_ D3DX11_PASS_SHADER_DESC *pDesc) PURE;
-
- STDMETHOD_(ID3DX11EffectVariable*, GetAnnotationByIndex)(THIS_ UINT Index) PURE;
- STDMETHOD_(ID3DX11EffectVariable*, GetAnnotationByName)(THIS_ LPCSTR Name) PURE;
-
- STDMETHOD(Apply)(THIS_ UINT Flags, ID3D11DeviceContext* pContext) PURE;
-
- STDMETHOD(ComputeStateBlockMask)(THIS_ D3DX11_STATE_BLOCK_MASK *pStateBlockMask) PURE;
-};
-
-//////////////////////////////////////////////////////////////////////////////
-// ID3DX11EffectTechnique /////////////////////////////////////////////////////
-//////////////////////////////////////////////////////////////////////////////
-
-//----------------------------------------------------------------------------
-// D3DX11_TECHNIQUE_DESC:
-//
-// Retrieved by ID3DX11EffectTechnique::GetDesc()
-//----------------------------------------------------------------------------
-
-typedef struct _D3DX11_TECHNIQUE_DESC
-{
- LPCSTR Name; // Name of this technique (NULL if not anonymous)
- UINT Passes; // Number of passes contained within
- UINT Annotations; // Number of annotations on this technique
-} D3DX11_TECHNIQUE_DESC;
-
-typedef interface ID3DX11EffectTechnique ID3DX11EffectTechnique;
-typedef interface ID3DX11EffectTechnique *LPD3D11EFFECTTECHNIQUE;
-
-// {51198831-1F1D-4F47-BD76-41CB0835B1DE}
-DEFINE_GUID(IID_ID3DX11EffectTechnique,
- 0x51198831, 0x1f1d, 0x4f47, 0xbd, 0x76, 0x41, 0xcb, 0x08, 0x35, 0xb1, 0xde);
-
-#undef INTERFACE
-#define INTERFACE ID3DX11EffectTechnique
-
-DECLARE_INTERFACE(ID3DX11EffectTechnique)
-{
- STDMETHOD_(BOOL, IsValid)(THIS) PURE;
- STDMETHOD(GetDesc)(THIS_ D3DX11_TECHNIQUE_DESC *pDesc) PURE;
-
- STDMETHOD_(ID3DX11EffectVariable*, GetAnnotationByIndex)(THIS_ UINT Index) PURE;
- STDMETHOD_(ID3DX11EffectVariable*, GetAnnotationByName)(THIS_ LPCSTR Name) PURE;
-
- STDMETHOD_(ID3DX11EffectPass*, GetPassByIndex)(THIS_ UINT Index) PURE;
- STDMETHOD_(ID3DX11EffectPass*, GetPassByName)(THIS_ LPCSTR Name) PURE;
-
- STDMETHOD(ComputeStateBlockMask)(THIS_ D3DX11_STATE_BLOCK_MASK *pStateBlockMask) PURE;
-};
-
-//////////////////////////////////////////////////////////////////////////////
-// ID3DX11EffectTechnique /////////////////////////////////////////////////////
-//////////////////////////////////////////////////////////////////////////////
-
-//----------------------------------------------------------------------------
-// D3DX11_GROUP_DESC:
-//
-// Retrieved by ID3DX11EffectTechnique::GetDesc()
-//----------------------------------------------------------------------------
-
-typedef struct _D3DX11_GROUP_DESC
-{
- LPCSTR Name; // Name of this group (only NULL if global)
- UINT Techniques; // Number of techniques contained within
- UINT Annotations; // Number of annotations on this group
-} D3DX11_GROUP_DESC;
-
-typedef interface ID3DX11EffectGroup ID3DX11EffectGroup;
-typedef interface ID3DX11EffectGroup *LPD3D11EFFECTGROUP;
-
-// {03074acf-97de-485f-b201-cb775264afd6}
-DEFINE_GUID(IID_ID3DX11EffectGroup,
- 0x03074acf, 0x97de, 0x485f, 0xb2, 0x01, 0xcb, 0x77, 0x52, 0x64, 0xaf, 0xd6);
-
-#undef INTERFACE
-#define INTERFACE ID3DX11EffectGroup
-
-DECLARE_INTERFACE(ID3DX11EffectGroup)
-{
- STDMETHOD_(BOOL, IsValid)(THIS) PURE;
- STDMETHOD(GetDesc)(THIS_ D3DX11_GROUP_DESC *pDesc) PURE;
-
- STDMETHOD_(ID3DX11EffectVariable*, GetAnnotationByIndex)(THIS_ UINT Index) PURE;
- STDMETHOD_(ID3DX11EffectVariable*, GetAnnotationByName)(THIS_ LPCSTR Name) PURE;
-
- STDMETHOD_(ID3DX11EffectTechnique*, GetTechniqueByIndex)(THIS_ UINT Index) PURE;
- STDMETHOD_(ID3DX11EffectTechnique*, GetTechniqueByName)(THIS_ LPCSTR Name) PURE;
-};
-
-//////////////////////////////////////////////////////////////////////////////
-// ID3DX11Effect //////////////////////////////////////////////////////////////
-//////////////////////////////////////////////////////////////////////////////
-
-//----------------------------------------------------------------------------
-// D3DX11_EFFECT_DESC:
-//
-// Retrieved by ID3DX11Effect::GetDesc()
-//----------------------------------------------------------------------------
-
-typedef struct _D3DX11_EFFECT_DESC
-{
- UINT ConstantBuffers; // Number of constant buffers in this effect
- UINT GlobalVariables; // Number of global variables in this effect
- UINT InterfaceVariables; // Number of global interfaces in this effect
- UINT Techniques; // Number of techniques in this effect
- UINT Groups; // Number of groups in this effect
-} D3DX11_EFFECT_DESC;
-
-typedef interface ID3DX11Effect ID3DX11Effect;
-typedef interface ID3DX11Effect *LPD3D11EFFECT;
-
-// {FA61CA24-E4BA-4262-9DB8-B132E8CAE319}
-DEFINE_GUID(IID_ID3DX11Effect,
- 0xfa61ca24, 0xe4ba, 0x4262, 0x9d, 0xb8, 0xb1, 0x32, 0xe8, 0xca, 0xe3, 0x19);
-
-#undef INTERFACE
-#define INTERFACE ID3DX11Effect
-
-DECLARE_INTERFACE_(ID3DX11Effect, IUnknown)
-{
- // IUnknown
- STDMETHOD(QueryInterface)(THIS_ REFIID iid, LPVOID *ppv) PURE;
- STDMETHOD_(ULONG, AddRef)(THIS) PURE;
- STDMETHOD_(ULONG, Release)(THIS) PURE;
-
- STDMETHOD_(BOOL, IsValid)(THIS) PURE;
-
- // Managing D3D Device
- STDMETHOD(GetDevice)(THIS_ ID3D11Device** ppDevice) PURE;
-
- // New Reflection APIs
- STDMETHOD(GetDesc)(THIS_ D3DX11_EFFECT_DESC *pDesc) PURE;
-
- STDMETHOD_(ID3DX11EffectConstantBuffer*, GetConstantBufferByIndex)(THIS_ UINT Index) PURE;
- STDMETHOD_(ID3DX11EffectConstantBuffer*, GetConstantBufferByName)(THIS_ LPCSTR Name) PURE;
-
- STDMETHOD_(ID3DX11EffectVariable*, GetVariableByIndex)(THIS_ UINT Index) PURE;
- STDMETHOD_(ID3DX11EffectVariable*, GetVariableByName)(THIS_ LPCSTR Name) PURE;
- STDMETHOD_(ID3DX11EffectVariable*, GetVariableBySemantic)(THIS_ LPCSTR Semantic) PURE;
-
- STDMETHOD_(ID3DX11EffectGroup*, GetGroupByIndex)(THIS_ UINT Index) PURE;
- STDMETHOD_(ID3DX11EffectGroup*, GetGroupByName)(THIS_ LPCSTR Name) PURE;
-
- STDMETHOD_(ID3DX11EffectTechnique*, GetTechniqueByIndex)(THIS_ UINT Index) PURE;
- STDMETHOD_(ID3DX11EffectTechnique*, GetTechniqueByName)(THIS_ LPCSTR Name) PURE;
-
- STDMETHOD_(ID3D11ClassLinkage*, GetClassLinkage)(THIS) PURE;
-
- STDMETHOD(CloneEffect)(THIS_ UINT Flags, ID3DX11Effect** ppClonedEffect ) PURE;
- STDMETHOD(Optimize)(THIS) PURE;
- STDMETHOD_(BOOL, IsOptimized)(THIS) PURE;
-};
-
-//////////////////////////////////////////////////////////////////////////////
-// APIs //////////////////////////////////////////////////////////////////////
-//////////////////////////////////////////////////////////////////////////////
-
-#ifdef __cplusplus
-extern "C" {
-#endif //__cplusplus
-
-//----------------------------------------------------------------------------
-// D3DX11CreateEffectFromMemory:
-// --------------------------
-// Creates an effect from a binary effect or file
-//
-// Parameters:
-//
-// [in]
-//
-//
-// pData
-// Blob of compiled effect data
-// DataLength
-// Length of the data blob
-// FXFlags
-// Compilation flags pertaining to Effect compilation, honored
-// by the Effect compiler
-// pDevice
-// Pointer to the D3D11 device on which to create Effect resources
-//
-// [out]
-//
-// ppEffect
-// Address of the newly created Effect interface
-//
-//----------------------------------------------------------------------------
-
-HRESULT WINAPI D3DX11CreateEffectFromMemory(CONST void *pData, SIZE_T DataLength, UINT FXFlags, ID3D11Device *pDevice, ID3DX11Effect **ppEffect);
-
-#ifdef __cplusplus
-}
-#endif //__cplusplus
-
-#endif //__D3DX11EFFECT_H__
-
diff --git a/sample/d3d11/Effects11/Inc/d3dxGlobal.h b/sample/d3d11/Effects11/Inc/d3dxGlobal.h
deleted file mode 100644
index 3b5cdf8..0000000
--- a/sample/d3d11/Effects11/Inc/d3dxGlobal.h
+++ /dev/null
@@ -1,1337 +0,0 @@
-//////////////////////////////////////////////////////////////////////////////
-//
-// Copyright (C) Microsoft Corporation. All Rights Reserved.
-//
-// File: D3DXGlobal.h
-// Content: D3DX11 Effects helper defines and data structures
-//
-//////////////////////////////////////////////////////////////////////////////
-
-#pragma once
-
-#pragma warning(disable : 4100 4127 4189 4201 4245 4389 4505 4701 4706)
-
-namespace D3DX11Debug
-{
-}
-
-using namespace D3DX11Debug;
-
-#include "d3dx11dbg.h"
-
-#define SAFE_RELEASE(p) { if (p) { (p)->Release(); (p) = NULL; } }
-#define SAFE_ADDREF(p) { if (p) { (p)->AddRef(); } }
-
-#define SAFE_DELETE_ARRAY(p) { delete [](p); p = NULL; }
-#define SAFE_DELETE(p) { delete (p); p = NULL; }
-
-#if FXDEBUG
-#define __BREAK_ON_FAIL { __debugbreak(); }
-#else
-#define __BREAK_ON_FAIL
-#endif
-
-#define VA(x, action) { hr = (x); if (FAILED(hr)) { action; __BREAK_ON_FAIL; return hr; } }
-#define VNA(x,action) { if (!(x)) { action; __BREAK_ON_FAIL; hr = E_OUTOFMEMORY; goto lExit; } }
-#define VBA(x,action) { if (!(x)) { action; __BREAK_ON_FAIL; hr = E_FAIL; goto lExit; } }
-#define VHA(x,action) { hr = (x); if (FAILED(hr)) { action; __BREAK_ON_FAIL; goto lExit; } }
-
-#define V(x) { VA (x, 0) }
-#define VN(x) { VNA(x, 0) }
-#define VB(x) { VBA(x, 0) }
-#define VH(x) { VHA(x, 0) }
-
-#define VBD(x,str) { VBA(x, DPF(1,str)) }
-#define VHD(x,str) { VHA(x, DPF(1,str)) }
-
-#define VEASSERT(x) { hr = (x); if (FAILED(hr)) { __BREAK_ON_FAIL; D3DXASSERT(!#x); goto lExit; } }
-#define VNASSERT(x) { if (!(x)) { __BREAK_ON_FAIL; D3DXASSERT(!#x); hr = E_OUTOFMEMORY; goto lExit; } }
-
-#define ANALYSIS_ASSUME(x) { D3DXASSERT(x); __analysis_assume(x); __assume(x); }
-
-#define D3DX11FLTASSIGN(a,b) { *reinterpret_cast< UINT32* >(&(a)) = *reinterpret_cast< UINT32* >(&(b)); }
-
-// Preferred data alignment -- must be a power of 2!
-static const UINT c_DataAlignment = sizeof(UINT_PTR);
-
-D3DX11INLINE UINT AlignToPowerOf2(UINT Value, UINT Alignment)
-{
- D3DXASSERT((Alignment & (Alignment - 1)) == 0);
- // to align to 2^N, add 2^N - 1 and AND with all but lowest N bits set
- ANALYSIS_ASSUME(Alignment > 0 && Value < MAXDWORD - Alignment);
- return (Value + Alignment - 1) & (~(Alignment - 1));
-}
-
-D3DX11INLINE void * AlignToPowerOf2(void *pValue, UINT_PTR Alignment)
-{
- D3DXASSERT((Alignment & (Alignment - 1)) == 0);
- // to align to 2^N, add 2^N - 1 and AND with all but lowest N bits set
- return (void *)(((UINT_PTR)pValue + Alignment - 1) & (~((UINT_PTR)Alignment - 1)));
-}
-
-
-// Fast memcpy
-D3DX11INLINE void dwordMemcpy( __out_bcount(uByteCount) void * __restrict pDest, __in_bcount(uByteCount) CONST void * __restrict pSource, UINT uByteCount)
-{
- UINT i;
- D3DXASSERT(uByteCount % 4 == 0);
-#ifdef _AMD64_
- const UINT qwordCount = uByteCount >> 3;
-
- __int64* src64 = (__int64*) pSource;
- __int64* dst64 = (__int64*) pDest;
-
- for (i=0; i<(qwordCount & 0x3); i++)
- {
- *(dst64) = *(src64);
- dst64++;
- src64++;
- }
-
- for (; i<qwordCount; i+= 4)
- {
- *(dst64 ) = *(src64 );
- *(dst64 + 1 ) = *(src64 + 1 );
- *(dst64 + 2 ) = *(src64 + 2 );
- *(dst64 + 3 ) = *(src64 + 3 );
- dst64 += 4;
- src64 += 4;
- }
-
- ANALYSIS_ASSUME( dst64 - static_cast< __int64* >(pDest) <= uByteCount - 4 );
- ANALYSIS_ASSUME( src64 - static_cast< const __int64* >(pSource) <= uByteCount - 4 );
- if( uByteCount & 0x4 )
- {
- *((UINT*)dst64) = *((UINT*)src64);
- }
-#else
- const UINT dwordCount = uByteCount >> 2;
-
- for (i=0; i<(dwordCount & 0x3); i++)
- {
-#pragma prefast(suppress: __WARNING_UNRELATED_LOOP_TERMINATION, "(dwordCount & 03) < dwordCount")
- ((UINT*)pDest)[i ] = ((UINT*)pSource)[i ];
- }
- for (; i<dwordCount; i+= 4)
- {
- ((UINT*)pDest)[i ] = ((UINT*)pSource)[i ];
- ((UINT*)pDest)[i+1] = ((UINT*)pSource)[i+1];
- ((UINT*)pDest)[i+2] = ((UINT*)pSource)[i+2];
- ((UINT*)pDest)[i+3] = ((UINT*)pSource)[i+3];
- }
-#endif
-}
-
-
-namespace D3DX11Core
-{
-
-//////////////////////////////////////////////////////////////////////////
-// CMemoryStream - A class to simplify reading binary data
-//////////////////////////////////////////////////////////////////////////
-class CMemoryStream
-{
- BYTE *m_pData;
- SIZE_T m_cbData;
- SIZE_T m_readPtr;
-
-public:
- HRESULT SetData(const void *pData, SIZE_T size);
-
- HRESULT Read(UINT *pUint);
- HRESULT Read(void **ppData, SIZE_T size);
- HRESULT Read(LPCSTR *ppString);
-
- HRESULT ReadAtOffset(SIZE_T offset, SIZE_T size, void **ppData);
- HRESULT ReadAtOffset(SIZE_T offset, LPCSTR *ppString);
-
- SIZE_T GetPosition();
- HRESULT Seek(SIZE_T offset);
-
- CMemoryStream();
- ~CMemoryStream();
-};
-
-}
-
-#if FXDEBUG
-
-namespace D3DX11Debug
-{
-
-// This variable indicates how many ticks to go before rolling over
-// all of the timer variables in the FX system.
-// It is read from the system registry in debug builds; in retail the high bit is simply tested.
-
-_declspec(selectany) unsigned int g_TimerRolloverCount = 0x80000000;
-}
-
-#endif // FXDEBUG
-
-
-//////////////////////////////////////////////////////////////////////////
-// CEffectVector - A vector implementation
-//////////////////////////////////////////////////////////////////////////
-
-template<class T> class CEffectVector
-{
-protected:
-#if _DEBUG
- T *m_pCastData; // makes debugging easier to have a casted version of the data
-#endif // _DEBUG
-
- BYTE *m_pData;
- UINT m_MaxSize;
- UINT m_CurSize;
-
- HRESULT Grow()
- {
- return Reserve(m_CurSize + 1);
- }
-
- HRESULT Reserve(UINT DesiredSize)
- {
- if (DesiredSize > m_MaxSize)
- {
- BYTE *pNewData;
- UINT newSize = max(m_MaxSize * 2, DesiredSize);
-
- if (newSize < 16)
- newSize = 16;
-
- if ((newSize < m_MaxSize) || (newSize < m_CurSize) || (newSize >= UINT_MAX / sizeof(T)))
- {
- m_hLastError = E_OUTOFMEMORY;
- return m_hLastError;
- }
-
- pNewData = NEW BYTE[newSize * sizeof(T)];
- if (pNewData == NULL)
- {
- m_hLastError = E_OUTOFMEMORY;
- return m_hLastError;
- }
-
- if (m_pData)
- {
- memcpy(pNewData, m_pData, m_CurSize * sizeof(T));
- delete []m_pData;
- }
-
- m_pData = pNewData;
- m_MaxSize = newSize;
- }
-#if _DEBUG
- m_pCastData = (T*) m_pData;
-#endif // _DEBUG
- return S_OK;
- }
-
-public:
- HRESULT m_hLastError;
-
- CEffectVector<T>()
- {
- m_hLastError = S_OK;
-#if _DEBUG
- m_pCastData = NULL;
-#endif // _DEBUG
- m_pData = NULL;
- m_CurSize = m_MaxSize = 0;
- }
-
- ~CEffectVector<T>()
- {
- Clear();
- }
-
- // cleanly swaps two vectors -- useful for when you want
- // to reallocate a vector and copy data over, then swap them back
- void SwapVector(CEffectVector<T> &vOther)
- {
- BYTE tempData[sizeof(*this)];
-
- memcpy(tempData, this, sizeof(*this));
- memcpy(this, &vOther, sizeof(*this));
- memcpy(&vOther, tempData, sizeof(*this));
- }
-
- HRESULT CopyFrom(CEffectVector<T> &vOther)
- {
- HRESULT hr = S_OK;
- Clear();
- VN( m_pData = NEW BYTE[vOther.m_MaxSize * sizeof(T)] );
-
- m_CurSize = vOther.m_CurSize;
- m_MaxSize = vOther.m_MaxSize;
- m_hLastError = vOther.m_hLastError;
-
- UINT i;
- for (i = 0; i < m_CurSize; ++ i)
- {
- ((T*)m_pData)[i] = ((T*)vOther.m_pData)[i];
- }
-
-lExit:
-
-#if _DEBUG
- m_pCastData = (T*) m_pData;
-#endif // _DEBUG
-
- return hr;
- }
-
- void Clear()
- {
- Empty();
- SAFE_DELETE_ARRAY(m_pData);
- m_MaxSize = 0;
-#if _DEBUG
- m_pCastData = NULL;
-#endif // _DEBUG
- }
-
- void ClearWithoutDestructor()
- {
- m_CurSize = 0;
- m_hLastError = S_OK;
- SAFE_DELETE_ARRAY(m_pData);
- m_MaxSize = 0;
-
-#if _DEBUG
- m_pCastData = NULL;
-#endif // _DEBUG
- }
-
- void Empty()
- {
- UINT i;
-
- // manually invoke destructor on all elements
- for (i = 0; i < m_CurSize; ++ i)
- {
- ((T*)m_pData + i)->~T();
- }
- m_CurSize = 0;
- m_hLastError = S_OK;
- }
-
- T* Add()
- {
- if (FAILED(Grow()))
- return NULL;
-
- // placement new
- return new((T*)m_pData + (m_CurSize ++)) T;
- }
-
- T* AddRange(UINT count)
- {
- if (m_CurSize + count < m_CurSize)
- {
- m_hLastError = E_OUTOFMEMORY;
- return NULL;
- }
-
- if (FAILED(Reserve(m_CurSize + count)))
- return NULL;
-
- T *pData = (T*)m_pData + m_CurSize;
- UINT i;
- for (i = 0; i < count; ++ i)
- {
- new(pData + i) T;
- }
- m_CurSize += count;
- return pData;
- }
-
- HRESULT Add(const T& var)
- {
- if (FAILED(Grow()))
- return m_hLastError;
-
- memcpy((T*)m_pData + m_CurSize, &var, sizeof(T));
- m_CurSize++;
-
- return S_OK;
- }
-
- HRESULT AddRange(const T *pVar, UINT count)
- {
- if (m_CurSize + count < m_CurSize)
- {
- m_hLastError = E_OUTOFMEMORY;
- return m_hLastError;
- }
-
- if (FAILED(Reserve(m_CurSize + count)))
- return m_hLastError;
-
- memcpy((T*)m_pData + m_CurSize, pVar, count * sizeof(T));
- m_CurSize += count;
-
- return S_OK;
- }
-
- HRESULT Insert(const T& var, UINT index)
- {
- D3DXASSERT(index < m_CurSize);
-
- if (FAILED(Grow()))
- return m_hLastError;
-
- memmove((T*)m_pData + index + 1, (T*)m_pData + index, (m_CurSize - index) * sizeof(T));
- memcpy((T*)m_pData + index, &var, sizeof(T));
- m_CurSize++;
-
- return S_OK;
- }
-
- HRESULT InsertRange(const T *pVar, UINT index, UINT count)
- {
- D3DXASSERT(index < m_CurSize);
-
- if (m_CurSize + count < m_CurSize)
- {
- m_hLastError = E_OUTOFMEMORY;
- return m_hLastError;
- }
-
- if (FAILED(Reserve(m_CurSize + count)))
- return m_hLastError;
-
- memmove((T*)m_pData + index + count, (T*)m_pData + index, (m_CurSize - index) * sizeof(T));
- memcpy((T*)m_pData + index, pVar, count * sizeof(T));
- m_CurSize += count;
-
- return S_OK;
- }
-
- inline T& operator[](UINT index)
- {
- D3DXASSERT(index < m_CurSize);
- return ((T*)m_pData)[index];
- }
-
- // Deletes element at index and shifts all other values down
- void Delete(UINT index)
- {
- D3DXASSERT(index < m_CurSize);
-
- -- m_CurSize;
- memmove((T*)m_pData + index, (T*)m_pData + index + 1, (m_CurSize - index) * sizeof(T));
- }
-
- // Deletes element at index and moves the last element into its place
- void QuickDelete(UINT index)
- {
- D3DXASSERT(index < m_CurSize);
-
- -- m_CurSize;
- memcpy((T*)m_pData + index, (T*)m_pData + m_CurSize, sizeof(T));
- }
-
- inline UINT GetSize() const
- {
- return m_CurSize;
- }
-
- inline T* GetData() const
- {
- return (T*)m_pData;
- }
-
- UINT FindIndexOf(void *pEntry) const
- {
- UINT i;
-
- for (i = 0; i < m_CurSize; ++ i)
- {
- if (((T*)m_pData + i) == pEntry)
- return i;
- }
-
- return -1;
- }
-
- void Sort(int (__cdecl *pfnCompare)(const void *pElem1, const void *pElem2))
- {
- qsort(m_pData, m_CurSize, sizeof(T), pfnCompare);
- }
-};
-
-//////////////////////////////////////////////////////////////////////////
-// CEffectVectorOwner - implements a vector of ptrs to objects. The vector owns the objects.
-//////////////////////////////////////////////////////////////////////////
-template<class T> class CEffectVectorOwner : public CEffectVector<T*>
-{
-public:
- ~CEffectVectorOwner<T>()
- {
- Clear();
- UINT i;
-
- for (i=0; i<m_CurSize; i++)
- SAFE_DELETE(((T**)m_pData)[i]);
-
- SAFE_DELETE_ARRAY(m_pData);
- }
-
- void Clear()
- {
- Empty();
- SAFE_DELETE_ARRAY(m_pData);
- m_MaxSize = 0;
- }
-
- void Empty()
- {
- UINT i;
-
- // manually invoke destructor on all elements
- for (i = 0; i < m_CurSize; ++ i)
- {
- SAFE_DELETE(((T**)m_pData)[i]);
- }
- m_CurSize = 0;
- m_hLastError = S_OK;
- }
-
- void Delete(UINT index)
- {
- D3DXASSERT(index < m_CurSize);
-
- SAFE_DELETE(((T**)m_pData)[index]);
-
- CEffectVector<T*>::Delete(index);
- }
-};
-
-
-//////////////////////////////////////////////////////////////////////////
-// Checked UINT, DWORD64
-// Use CheckedNumber only with UINT and DWORD64
-//////////////////////////////////////////////////////////////////////////
-template <class T, T MaxValue> class CheckedNumber
-{
- T m_Value;
- BOOL m_bValid;
-
-public:
- CheckedNumber<T, MaxValue>()
- {
- m_Value = 0;
- m_bValid = TRUE;
- }
-
- CheckedNumber<T, MaxValue>(const T &value)
- {
- m_Value = value;
- m_bValid = TRUE;
- }
-
- CheckedNumber<T, MaxValue>(const CheckedNumber<T, MaxValue> &value)
- {
- m_bValid = value.m_bValid;
- m_Value = value.m_Value;
- }
-
- CheckedNumber<T, MaxValue> &operator+(const CheckedNumber<T, MaxValue> &other)
- {
- CheckedNumber<T, MaxValue> Res(*this);
- return Res+=other;
- }
-
- CheckedNumber<T, MaxValue> &operator+=(const CheckedNumber<T, MaxValue> &other)
- {
- if (!other.m_bValid)
- {
- m_bValid = FALSE;
- }
- else
- {
- m_Value += other.m_Value;
-
- if (m_Value < other.m_Value)
- m_bValid = FALSE;
- }
-
- return *this;
- }
-
- CheckedNumber<T, MaxValue> &operator*(const CheckedNumber<T, MaxValue> &other)
- {
- CheckedNumber<T, MaxValue> Res(*this);
- return Res*=other;
- }
-
- CheckedNumber<T, MaxValue> &operator*=(const CheckedNumber<T, MaxValue> &other)
- {
- if (!other.m_bValid)
- {
- m_bValid = FALSE;
- }
- else
- {
- if (other.m_Value != 0)
- {
- if (m_Value > MaxValue / other.m_Value)
- {
- m_bValid = FALSE;
- }
- }
- m_Value *= other.m_Value;
- }
-
- return *this;
- }
-
- HRESULT GetValue(T *pValue)
- {
- if (!m_bValid)
- {
- *pValue = -1;
- return E_FAIL;
- }
-
- *pValue = m_Value;
- return S_OK;
- }
-};
-
-typedef CheckedNumber<UINT, _UI32_MAX> CCheckedDword;
-typedef CheckedNumber<DWORD64, _UI64_MAX> CCheckedDword64;
-
-
-//////////////////////////////////////////////////////////////////////////
-// Data Block Store - A linked list of allocations
-//////////////////////////////////////////////////////////////////////////
-
-class CDataBlock
-{
-protected:
- UINT m_size;
- UINT m_maxSize;
- BYTE *m_pData;
- CDataBlock *m_pNext;
-
- BOOL m_IsAligned; // Whether or not to align the data to c_DataAlignment
-
-public:
- // AddData appends an existing use buffer to the data block
- HRESULT AddData(const void *pNewData, UINT bufferSize, CDataBlock **ppBlock);
-
- // Allocate reserves bufferSize bytes of contiguous memory and returns a pointer to the user
- void* Allocate(UINT bufferSize, CDataBlock **ppBlock);
-
- void EnableAlignment();
-
- CDataBlock();
- ~CDataBlock();
-
- friend class CDataBlockStore;
-};
-
-
-class CDataBlockStore
-{
-protected:
- CDataBlock *m_pFirst;
- CDataBlock *m_pLast;
- UINT m_Size;
- UINT m_Offset; // m_Offset gets added to offsets returned from AddData & AddString. Use this to set a global for the entire string block
- BOOL m_IsAligned; // Whether or not to align the data to c_DataAlignment
-
-public:
-#if _DEBUG
- UINT m_cAllocations;
-#endif
-
-public:
- HRESULT AddString(LPCSTR pString, UINT *pOffset); // Writes a null-terminated string to buffer
- HRESULT AddData(const void *pNewData, UINT bufferSize, UINT *pOffset); // Writes data block to buffer
-
- void* Allocate(UINT buffferSize); // Memory allocator support
- UINT GetSize();
- void EnableAlignment();
-
- CDataBlockStore();
- ~CDataBlockStore();
-};
-
-// Custom allocator that uses CDataBlockStore
-// The trick is that we never free, so we don't have to keep as much state around
-// Use PRIVATENEW in CEffectLoader
-
-static void* __cdecl operator new(size_t s, CDataBlockStore &pAllocator)
-{
- D3DXASSERT( s <= 0xffffffff );
- return pAllocator.Allocate( (UINT)s );
-}
-
-static void __cdecl operator delete(void* p, CDataBlockStore &pAllocator)
-{
-}
-
-
-//////////////////////////////////////////////////////////////////////////
-// Hash table
-//////////////////////////////////////////////////////////////////////////
-
-#define HASH_MIX(a,b,c) \
-{ \
- a -= b; a -= c; a ^= (c>>13); \
- b -= c; b -= a; b ^= (a<<8); \
- c -= a; c -= b; c ^= (b>>13); \
- a -= b; a -= c; a ^= (c>>12); \
- b -= c; b -= a; b ^= (a<<16); \
- c -= a; c -= b; c ^= (b>>5); \
- a -= b; a -= c; a ^= (c>>3); \
- b -= c; b -= a; b ^= (a<<10); \
- c -= a; c -= b; c ^= (b>>15); \
-}
-
-static UINT ComputeHash(BYTE *pb, UINT cbToHash)
-{
- UINT a;
- UINT b;
- UINT c;
- UINT cbLeft;
-
- cbLeft = cbToHash;
-
- a = b = 0x9e3779b9; // the golden ratio; an arbitrary value
- c = 0;
-
- while (cbLeft >= 12)
- {
- UINT *pdw = reinterpret_cast<UINT *>(pb);
-
- a += pdw[0];
- b += pdw[1];
- c += pdw[2];
-
- HASH_MIX(a,b,c);
- pb += 12;
- cbLeft -= 12;
- }
-
- c += cbToHash;
-
- switch(cbLeft) // all the case statements fall through
- {
- case 11: c+=((UINT) pb[10] << 24);
- case 10: c+=((UINT) pb[9] << 16);
- case 9 : c+=((UINT) pb[8] << 8);
- // the first byte of c is reserved for the length
- case 8 : b+=((UINT) pb[7] << 24);
- case 7 : b+=((UINT) pb[6] << 16);
- case 6 : b+=((UINT) pb[5] << 8);
- case 5 : b+=pb[4];
- case 4 : a+=((UINT) pb[3] << 24);
- case 3 : a+=((UINT) pb[2] << 16);
- case 2 : a+=((UINT) pb[1] << 8);
- case 1 : a+=pb[0];
- }
-
- HASH_MIX(a,b,c);
-
- return c;
-}
-
-static UINT ComputeHashLower(BYTE *pb, UINT cbToHash)
-{
- UINT a;
- UINT b;
- UINT c;
- UINT cbLeft;
-
- cbLeft = cbToHash;
-
- a = b = 0x9e3779b9; // the golden ratio; an arbitrary value
- c = 0;
-
- while (cbLeft >= 12)
- {
- BYTE pbT[12];
- for( UINT i = 0; i < 12; i++ )
- pbT[i] = (BYTE)tolower(pb[i]);
-
- UINT *pdw = reinterpret_cast<UINT *>(pbT);
-
- a += pdw[0];
- b += pdw[1];
- c += pdw[2];
-
- HASH_MIX(a,b,c);
- pb += 12;
- cbLeft -= 12;
- }
-
- c += cbToHash;
-
- BYTE pbT[12];
- for( UINT i = 0; i < cbLeft; i++ )
- pbT[i] = (BYTE)tolower(pb[i]);
-
- switch(cbLeft) // all the case statements fall through
- {
- case 11: c+=((UINT) pbT[10] << 24);
- case 10: c+=((UINT) pbT[9] << 16);
- case 9 : c+=((UINT) pbT[8] << 8);
- // the first byte of c is reserved for the length
- case 8 : b+=((UINT) pbT[7] << 24);
- case 7 : b+=((UINT) pbT[6] << 16);
- case 6 : b+=((UINT) pbT[5] << 8);
- case 5 : b+=pbT[4];
- case 4 : a+=((UINT) pbT[3] << 24);
- case 3 : a+=((UINT) pbT[2] << 16);
- case 2 : a+=((UINT) pbT[1] << 8);
- case 1 : a+=pbT[0];
- }
-
- HASH_MIX(a,b,c);
-
- return c;
-}
-
-
-static UINT ComputeHash(LPCSTR pString)
-{
- return ComputeHash((BYTE*) pString, (UINT)strlen(pString));
-}
-
-
-// 1) these numbers are prime
-// 2) each is slightly less than double the last
-// 4) each is roughly in between two powers of 2;
-// (2^n hash table sizes are VERY BAD; they effectively truncate your
-// precision down to the n least significant bits of the hash)
-static const UINT c_PrimeSizes[] =
-{
- 11,
- 23,
- 53,
- 97,
- 193,
- 389,
- 769,
- 1543,
- 3079,
- 6151,
- 12289,
- 24593,
- 49157,
- 98317,
- 196613,
- 393241,
- 786433,
- 1572869,
- 3145739,
- 6291469,
- 12582917,
- 25165843,
- 50331653,
- 100663319,
- 201326611,
- 402653189,
- 805306457,
- 1610612741,
-};
-
-static const UINT c_NumPrimes = sizeof(c_PrimeSizes) / sizeof(UINT);
-
-template<typename T, BOOL (*pfnIsEqual)(const T &Data1, const T &Data2)>
-class CEffectHashTable
-{
-protected:
-
- struct SHashEntry
- {
- UINT Hash;
- T Data;
- SHashEntry *pNext;
- };
-
- // Array of hash entries
- SHashEntry **m_rgpHashEntries;
- UINT m_NumHashSlots;
- UINT m_NumEntries;
- bool m_bOwnHashEntryArray;
-
-public:
- class CIterator
- {
- friend class CEffectHashTable;
-
- protected:
- SHashEntry **ppHashSlot;
- SHashEntry *pHashEntry;
-
- public:
- T GetData()
- {
- D3DXASSERT(NULL != pHashEntry);
- return pHashEntry->Data;
- }
-
- UINT GetHash()
- {
- D3DXASSERT(NULL != pHashEntry);
- return pHashEntry->Hash;
- }
- };
-
- CEffectHashTable()
- {
- m_rgpHashEntries = NULL;
- m_NumHashSlots = 0;
- m_NumEntries = 0;
- m_bOwnHashEntryArray = false;
- }
-
- HRESULT Initialize(CEffectHashTable *pOther)
- {
- HRESULT hr = S_OK;
- SHashEntry **rgpNewHashEntries = NULL;
- SHashEntry ***rgppListEnds = NULL;
- UINT i;
- UINT valuesMigrated = 0;
- UINT actualSize;
-
- Cleanup();
-
- actualSize = pOther->m_NumHashSlots;
- VN( rgpNewHashEntries = NEW SHashEntry*[actualSize] );
-
- ZeroMemory(rgpNewHashEntries, sizeof(SHashEntry*) * actualSize);
-
- // Expensive operation: rebuild the hash table
- CIterator iter, nextIter;
- pOther->GetFirstEntry(&iter);
- while (!pOther->PastEnd(&iter))
- {
- UINT index = iter.GetHash() % actualSize;
-
- // we need to advance to the next element
- // before we seize control of this element and move
- // it to the new table
- nextIter = iter;
- pOther->GetNextEntry(&nextIter);
-
- // seize this hash entry, migrate it to the new table
- SHashEntry *pNewEntry;
- VN( pNewEntry = NEW SHashEntry );
-
- pNewEntry->pNext = rgpNewHashEntries[index];
- pNewEntry->Data = iter.pHashEntry->Data;
- pNewEntry->Hash = iter.pHashEntry->Hash;
- rgpNewHashEntries[index] = pNewEntry;
-
- iter = nextIter;
- ++ valuesMigrated;
- }
-
- D3DXASSERT(valuesMigrated == pOther->m_NumEntries);
-
- m_rgpHashEntries = rgpNewHashEntries;
- m_NumHashSlots = actualSize;
- m_NumEntries = pOther->m_NumEntries;
- m_bOwnHashEntryArray = true;
- rgpNewHashEntries = NULL;
-
-lExit:
- SAFE_DELETE_ARRAY( rgpNewHashEntries );
- return hr;
- }
-
-protected:
- void CleanArray()
- {
- if (m_bOwnHashEntryArray)
- {
- SAFE_DELETE_ARRAY(m_rgpHashEntries);
- m_bOwnHashEntryArray = false;
- }
- }
-
-public:
- void Cleanup()
- {
- UINT i;
- for (i = 0; i < m_NumHashSlots; ++ i)
- {
- SHashEntry *pCurrentEntry = m_rgpHashEntries[i];
- SHashEntry *pTempEntry;
- while (NULL != pCurrentEntry)
- {
- pTempEntry = pCurrentEntry->pNext;
- SAFE_DELETE(pCurrentEntry);
- pCurrentEntry = pTempEntry;
- -- m_NumEntries;
- }
- }
- CleanArray();
- m_NumHashSlots = 0;
- D3DXASSERT(m_NumEntries == 0);
- }
-
- ~CEffectHashTable()
- {
- Cleanup();
- }
-
- static UINT GetNextHashTableSize(__in UINT DesiredSize)
- {
- // figure out the next logical size to use
- for (UINT i = 0; i < c_NumPrimes; ++ i)
- {
- if (c_PrimeSizes[i] >= DesiredSize)
- {
- return c_PrimeSizes[i];
- }
- }
-
- return DesiredSize;
- }
-
- // O(n) function
- // Grows to the next suitable size (based off of the prime number table)
- // DesiredSize is merely a suggestion
- HRESULT Grow(__in UINT DesiredSize,
- __in UINT ProvidedArraySize = 0,
- __in_ecount_opt(ProvidedArraySize)
- void** ProvidedArray = NULL,
- __in bool OwnProvidedArray = false)
- {
- HRESULT hr = S_OK;
- SHashEntry **rgpNewHashEntries = NULL;
- SHashEntry ***rgppListEnds = NULL;
- UINT valuesMigrated = 0;
- UINT actualSize;
-
- VB( DesiredSize > m_NumHashSlots );
-
- actualSize = GetNextHashTableSize(DesiredSize);
-
- if (ProvidedArray &&
- ProvidedArraySize >= actualSize)
- {
- rgpNewHashEntries = reinterpret_cast<SHashEntry**>(ProvidedArray);
- }
- else
- {
- OwnProvidedArray = true;
-
- VN( rgpNewHashEntries = NEW SHashEntry*[actualSize] );
- }
-
- ZeroMemory(rgpNewHashEntries, sizeof(SHashEntry*) * actualSize);
-
- // Expensive operation: rebuild the hash table
- CIterator iter, nextIter;
- GetFirstEntry(&iter);
- while (!PastEnd(&iter))
- {
- UINT index = iter.GetHash() % actualSize;
-
- // we need to advance to the next element
- // before we seize control of this element and move
- // it to the new table
- nextIter = iter;
- GetNextEntry(&nextIter);
-
- // seize this hash entry, migrate it to the new table
- iter.pHashEntry->pNext = rgpNewHashEntries[index];
- rgpNewHashEntries[index] = iter.pHashEntry;
-
- iter = nextIter;
- ++ valuesMigrated;
- }
-
- D3DXASSERT(valuesMigrated == m_NumEntries);
-
- CleanArray();
- m_rgpHashEntries = rgpNewHashEntries;
- m_NumHashSlots = actualSize;
- m_bOwnHashEntryArray = OwnProvidedArray;
-
-lExit:
- return hr;
- }
-
- HRESULT AutoGrow()
- {
- // arbitrary heuristic -- grow if 1:1
- if (m_NumEntries >= m_NumHashSlots)
- {
- // grows this hash table so that it is roughly 50% full
- return Grow(m_NumEntries * 2 + 1);
- }
- return S_OK;
- }
-
-#if _DEBUG
- void PrintHashTableStats()
- {
- if (m_NumHashSlots == 0)
- {
- DPF(0, "Uninitialized hash table!");
- return;
- }
-
- UINT i;
- float variance = 0.0f;
- float mean = (float)m_NumEntries / (float)m_NumHashSlots;
- UINT unusedSlots = 0;
-
- DPF(0, "Hash table slots: %d, Entries in table: %d", m_NumHashSlots, m_NumEntries);
-
- for (i = 0; i < m_NumHashSlots; ++ i)
- {
- UINT entries = 0;
- SHashEntry *pCurrentEntry = m_rgpHashEntries[i];
-
- while (NULL != pCurrentEntry)
- {
- SHashEntry *pCurrentEntry2 = m_rgpHashEntries[i];
-
- // check other hash entries in this slot for hash collisions or duplications
- while (pCurrentEntry2 != pCurrentEntry)
- {
- if (pCurrentEntry->Hash == pCurrentEntry2->Hash)
- {
- if (pfnIsEqual(pCurrentEntry->Data, pCurrentEntry2->Data))
- {
- D3DXASSERT(0);
- DPF(0, "Duplicate entry (identical hash, identical data) found!");
- }
- else
- {
- DPF(0, "Hash collision (hash: %d)", pCurrentEntry->Hash);
- }
- }
- pCurrentEntry2 = pCurrentEntry2->pNext;
- }
-
- pCurrentEntry = pCurrentEntry->pNext;
- ++ entries;
- }
-
- if (0 == entries)
- {
- ++ unusedSlots;
- }
-
- // mean must be greater than 0 at this point
- variance += (float)entries * (float)entries / mean;
- }
-
- variance /= max(1.0f, (m_NumHashSlots - 1));
- variance -= (mean * mean);
-
- DPF(0, "Mean number of entries per slot: %f, Standard deviation: %f, Unused slots; %d", mean, variance, unusedSlots);
- }
-#endif // _DEBUG
-
- // S_OK if element is found, E_FAIL otherwise
- HRESULT FindValueWithHash(T Data, UINT Hash, CIterator *pIterator)
- {
- D3DXASSERT(m_NumHashSlots > 0);
-
- UINT index = Hash % m_NumHashSlots;
- SHashEntry *pEntry = m_rgpHashEntries[index];
- while (NULL != pEntry)
- {
- if (Hash == pEntry->Hash && pfnIsEqual(pEntry->Data, Data))
- {
- pIterator->ppHashSlot = m_rgpHashEntries + index;
- pIterator->pHashEntry = pEntry;
- return S_OK;
- }
- pEntry = pEntry->pNext;
- }
- return E_FAIL;
- }
-
- // S_OK if element is found, E_FAIL otherwise
- HRESULT FindFirstMatchingValue(UINT Hash, CIterator *pIterator)
- {
- D3DXASSERT(m_NumHashSlots > 0);
-
- UINT index = Hash % m_NumHashSlots;
- SHashEntry *pEntry = m_rgpHashEntries[index];
- while (NULL != pEntry)
- {
- if (Hash == pEntry->Hash)
- {
- pIterator->ppHashSlot = m_rgpHashEntries + index;
- pIterator->pHashEntry = pEntry;
- return S_OK;
- }
- pEntry = pEntry->pNext;
- }
- return E_FAIL;
- }
-
- // Adds data at the specified hash slot without checking for existence
- HRESULT AddValueWithHash(T Data, UINT Hash)
- {
- HRESULT hr = S_OK;
-
- D3DXASSERT(m_NumHashSlots > 0);
-
- SHashEntry *pHashEntry;
- UINT index = Hash % m_NumHashSlots;
-
- VN( pHashEntry = NEW SHashEntry );
- pHashEntry->pNext = m_rgpHashEntries[index];
- pHashEntry->Data = Data;
- pHashEntry->Hash = Hash;
- m_rgpHashEntries[index] = pHashEntry;
-
- ++ m_NumEntries;
-
-lExit:
- return hr;
- }
-
- // Iterator code:
- //
- // CMyHashTable::CIterator myIt;
- // for (myTable.GetFirstEntry(&myIt); !myTable.PastEnd(&myIt); myTable.GetNextEntry(&myIt)
- // { myTable.GetData(&myIt); }
- void GetFirstEntry(CIterator *pIterator)
- {
- SHashEntry **ppEnd = m_rgpHashEntries + m_NumHashSlots;
- pIterator->ppHashSlot = m_rgpHashEntries;
- while (pIterator->ppHashSlot < ppEnd)
- {
- if (NULL != *(pIterator->ppHashSlot))
- {
- pIterator->pHashEntry = *(pIterator->ppHashSlot);
- return;
- }
- ++ pIterator->ppHashSlot;
- }
- }
-
- BOOL PastEnd(CIterator *pIterator)
- {
- SHashEntry **ppEnd = m_rgpHashEntries + m_NumHashSlots;
- D3DXASSERT(pIterator->ppHashSlot >= m_rgpHashEntries && pIterator->ppHashSlot <= ppEnd);
- return (pIterator->ppHashSlot == ppEnd);
- }
-
- void GetNextEntry(CIterator *pIterator)
- {
- SHashEntry **ppEnd = m_rgpHashEntries + m_NumHashSlots;
- D3DXASSERT(pIterator->ppHashSlot >= m_rgpHashEntries && pIterator->ppHashSlot <= ppEnd);
- D3DXASSERT(NULL != pIterator->pHashEntry);
-
- pIterator->pHashEntry = pIterator->pHashEntry->pNext;
- if (NULL != pIterator->pHashEntry)
- {
- return;
- }
-
- ++ pIterator->ppHashSlot;
- while (pIterator->ppHashSlot < ppEnd)
- {
- pIterator->pHashEntry = *(pIterator->ppHashSlot);
- if (NULL != pIterator->pHashEntry)
- {
- return;
- }
- ++ pIterator->ppHashSlot;
- }
- // hit the end of the list, ppHashSlot == ppEnd
- }
-
- void RemoveEntry(CIterator *pIterator)
- {
- SHashEntry *pTemp;
- SHashEntry **ppPrev;
- SHashEntry **ppEnd = m_rgpHashEntries + m_NumHashSlots;
-
- D3DXASSERT(pIterator && !PastEnd(pIterator));
- ppPrev = pIterator->ppHashSlot;
- pTemp = *ppPrev;
- while (pTemp)
- {
- if (pTemp == pIterator->pHashEntry)
- {
- *ppPrev = pTemp->pNext;
- pIterator->ppHashSlot = ppEnd;
- delete pTemp;
- return;
- }
- ppPrev = &pTemp->pNext;
- pTemp = pTemp->pNext;
- }
-
- // Should never get here
- D3DXASSERT(0);
- }
-
-};
-
-// Allocates the hash slots on the regular heap (since the
-// hash table can grow), but all hash entries are allocated on
-// a private heap
-
-template<typename T, BOOL (*pfnIsEqual)(const T &Data1, const T &Data2)>
-class CEffectHashTableWithPrivateHeap : public CEffectHashTable<T, pfnIsEqual>
-{
-protected:
- CDataBlockStore *m_pPrivateHeap;
-
-public:
- CEffectHashTableWithPrivateHeap()
- {
- m_pPrivateHeap = NULL;
- }
-
- void Cleanup()
- {
- CleanArray();
- m_NumHashSlots = 0;
- m_NumEntries = 0;
- }
-
- ~CEffectHashTableWithPrivateHeap()
- {
- Cleanup();
- }
-
- // Call this only once
- void SetPrivateHeap(CDataBlockStore *pPrivateHeap)
- {
- D3DXASSERT(NULL == m_pPrivateHeap);
- m_pPrivateHeap = pPrivateHeap;
- }
-
- // Adds data at the specified hash slot without checking for existence
- HRESULT AddValueWithHash(T Data, UINT Hash)
- {
- HRESULT hr = S_OK;
-
- D3DXASSERT(NULL != m_pPrivateHeap);
- D3DXASSERT(m_NumHashSlots > 0);
-
- SHashEntry *pHashEntry;
- UINT index = Hash % m_NumHashSlots;
-
- VN( pHashEntry = new(*m_pPrivateHeap) SHashEntry );
- pHashEntry->pNext = m_rgpHashEntries[index];
- pHashEntry->Data = Data;
- pHashEntry->Hash = Hash;
- m_rgpHashEntries[index] = pHashEntry;
-
- ++ m_NumEntries;
-
-lExit:
- return hr;
- }
-};