📄 d3d10effect.h
字号:
//////////////////////////////////////////////////////////////////////////////
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// File: D3D10Effect.h
// Content: D3D10 Stateblock/Effect Types & APIs
//
//////////////////////////////////////////////////////////////////////////////
#ifndef __D3D10EFFECT_H__
#define __D3D10EFFECT_H__
#include "d3d10.h"
//////////////////////////////////////////////////////////////////////////////
// File contents:
//
// 1) Stateblock enums, structs, interfaces, flat APIs
// 2) Effect enums, structs, interfaces, flat APIs
//////////////////////////////////////////////////////////////////////////////
//----------------------------------------------------------------------------
// D3D10_DEVICE_STATE_TYPES:
//
// Used in ID3D10StateBlockMask function calls
//
//----------------------------------------------------------------------------
typedef enum _D3D10_DEVICE_STATE_TYPES
{
D3D10_DST_VS = 1, // Single-value state
D3D10_DST_VS_SAMPLERS, // Count: D3D10_COMMONSHADER_SAMPLER_SLOT_COUNT
D3D10_DST_VS_SHADER_RESOURCES, // Count: D3D10_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT
D3D10_DST_VS_CONSTANT_BUFFERS, // Count: D3D10_COMMONSHADER_CONSTANT_BUFFER_SLOT_COUNT
D3D10_DST_GS, // Single-value state
D3D10_DST_GS_SAMPLERS, // Count: D3D10_COMMONSHADER_SAMPLER_SLOT_COUNT
D3D10_DST_GS_SHADER_RESOURCES, // Count: D3D10_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT
D3D10_DST_GS_CONSTANT_BUFFERS, // Count: D3D10_COMMONSHADER_CONSTANT_BUFFER_SLOT_COUNT
D3D10_DST_PS, // Single-value state
D3D10_DST_PS_SAMPLERS, // Count: D3D10_COMMONSHADER_SAMPLER_SLOT_COUNT
D3D10_DST_PS_SHADER_RESOURCES, // Count: D3D10_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT
D3D10_DST_PS_CONSTANT_BUFFERS, // Count: D3D10_COMMONSHADER_CONSTANT_BUFFER_SLOT_COUNT
D3D10_DST_IA_VERTEX_BUFFERS, // Count: D3D10_IA_VERTEX_INPUT_RESOURCE_SLOT_COUNT
D3D10_DST_IA_INDEX_BUFFER, // Single-value state
D3D10_DST_IA_INPUT_LAYOUT, // Single-value state
D3D10_DST_IA_PRIMITIVE_TOPOLOGY, // Single-value state
D3D10_DST_OM_RENDER_TARGETS, // Single-value state (atomical gets/sets)
D3D10_DST_OM_DEPTH_STENCIL_STATE, // Single-value state
D3D10_DST_OM_BLEND_STATE, // Single-value state
D3D10_DST_RS_VIEWPORTS, // Single-value state (atomical gets/sets)
D3D10_DST_RS_SCISSOR_RECTS, // Single-value state (atomical gets/sets)
D3D10_DST_RS_RASTERIZER_STATE, // Single-value state
D3D10_DST_SO_BUFFERS, // Single-value state (atomical gets/sets)
D3D10_DST_PREDICATION, // Single-value state
} D3D10_DEVICE_STATE_TYPES;
//----------------------------------------------------------------------------
// D3D10_DEVICE_STATE_TYPES:
//
// Used in ID3D10StateBlockMask function calls
//
//----------------------------------------------------------------------------
#ifndef D3D10_BYTES_FROM_BITS
#define D3D10_BYTES_FROM_BITS(x) (((x) + 7) / 8)
#endif // D3D10_BYTES_FROM_BITS
typedef struct _D3D10_STATE_BLOCK_MASK
{
BYTE VS;
BYTE VSSamplers[D3D10_BYTES_FROM_BITS(D3D10_COMMONSHADER_SAMPLER_SLOT_COUNT)];
BYTE VSShaderResources[D3D10_BYTES_FROM_BITS(D3D10_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT)];
BYTE VSConstantBuffers[D3D10_BYTES_FROM_BITS(D3D10_COMMONSHADER_CONSTANT_BUFFER_SLOT_COUNT)];
BYTE GS;
BYTE GSSamplers[D3D10_BYTES_FROM_BITS(D3D10_COMMONSHADER_SAMPLER_SLOT_COUNT)];
BYTE GSShaderResources[D3D10_BYTES_FROM_BITS(D3D10_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT)];
BYTE GSConstantBuffers[D3D10_BYTES_FROM_BITS(D3D10_COMMONSHADER_CONSTANT_BUFFER_SLOT_COUNT)];
BYTE PS;
BYTE PSSamplers[D3D10_BYTES_FROM_BITS(D3D10_COMMONSHADER_SAMPLER_SLOT_COUNT)];
BYTE PSShaderResources[D3D10_BYTES_FROM_BITS(D3D10_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT)];
BYTE PSConstantBuffers[D3D10_BYTES_FROM_BITS(D3D10_COMMONSHADER_CONSTANT_BUFFER_SLOT_COUNT)];
BYTE IAVertexBuffers[D3D10_BYTES_FROM_BITS(D3D10_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;
} D3D10_STATE_BLOCK_MASK;
//////////////////////////////////////////////////////////////////////////////
// ID3D10StateBlock //////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
typedef interface ID3D10StateBlock ID3D10StateBlock;
typedef interface ID3D10StateBlock *LPD3D10STATEBLOCK;
// {0803425A-57F5-4dd6-9465-A87570834A08}
DEFINE_GUID(IID_ID3D10StateBlock,
0x803425a, 0x57f5, 0x4dd6, 0x94, 0x65, 0xa8, 0x75, 0x70, 0x83, 0x4a, 0x8);
#undef INTERFACE
#define INTERFACE ID3D10StateBlock
DECLARE_INTERFACE_(ID3D10StateBlock, IUnknown)
{
STDMETHOD(QueryInterface)(THIS_ REFIID iid, LPVOID *ppv) PURE;
STDMETHOD_(ULONG, AddRef)(THIS) PURE;
STDMETHOD_(ULONG, Release)(THIS) PURE;
STDMETHOD(Capture)(THIS) PURE;
STDMETHOD(Apply)(THIS) PURE;
STDMETHOD(GetDevice)(THIS_ ID3D10Device **ppDevice) PURE;
};
#ifdef __cplusplus
extern "C" {
#endif //__cplusplus
//----------------------------------------------------------------------------
// D3D10_STATE_BLOCK_MASK and manipulation functions
// -------------------------------------------------
//
// These functions exist to facilitate working with the D3D10_STATE_BLOCK_MASK
// structure.
//
// D3D10_STATE_BLOCK_MASK *pResult or *pMask
// The state block mask to operate on
//
// D3D10_STATE_BLOCK_MASK *pA, *pB
// The source state block masks for the binary union/intersect/difference
// operations.
//
// D3D10_DEVICE_STATE_TYPES StateType
// The specific state type to enable/disable/query
//
// UINT RangeStart, RangeLength, Entry
// The specific bit or range of bits for a given state type to operate on.
// Consult the comments for D3D10_DEVICE_STATE_TYPES and
// D3D10_STATE_BLOCK_MASK for information on the valid bit ranges for
// each state.
//
//----------------------------------------------------------------------------
HRESULT D3D10StateBlockMaskUnion(D3D10_STATE_BLOCK_MASK *pA, D3D10_STATE_BLOCK_MASK *pB, D3D10_STATE_BLOCK_MASK *pResult);
HRESULT D3D10StateBlockMaskIntersect(D3D10_STATE_BLOCK_MASK *pA, D3D10_STATE_BLOCK_MASK *pB, D3D10_STATE_BLOCK_MASK *pResult);
HRESULT D3D10StateBlockMaskDifference(D3D10_STATE_BLOCK_MASK *pA, D3D10_STATE_BLOCK_MASK *pB, D3D10_STATE_BLOCK_MASK *pResult);
HRESULT D3D10StateBlockMaskEnableCapture(D3D10_STATE_BLOCK_MASK *pMask, D3D10_DEVICE_STATE_TYPES StateType, UINT RangeStart, UINT RangeLength);
HRESULT D3D10StateBlockMaskDisableCapture(D3D10_STATE_BLOCK_MASK *pMask, D3D10_DEVICE_STATE_TYPES StateType, UINT RangeStart, UINT RangeLength);
HRESULT D3D10StateBlockMaskEnableAll(D3D10_STATE_BLOCK_MASK *pMask);
HRESULT D3D10StateBlockMaskDisableAll(D3D10_STATE_BLOCK_MASK *pMask);
BOOL D3D10StateBlockMaskGetSetting(D3D10_STATE_BLOCK_MASK *pMask, D3D10_DEVICE_STATE_TYPES StateType, UINT Entry);
//----------------------------------------------------------------------------
// D3D10CreateStateBlock
// ---------------------
//
// Creates a state block object based on the mask settings specified
// in a D3D10_STATE_BLOCK_MASK structure.
//
// ID3D10Device *pDevice
// The device interface to associate with this state block
//
// D3D10_STATE_BLOCK_MASK *pStateBlockMask
// A bit mask whose settings are used to generate a state block
// object.
//
// ID3D10StateBlock **ppStateBlock
// The resulting state block object. This object will save/restore
// only those pieces of state that were set in the state block
// bit mask
//----------------------------------------------------------------------------
HRESULT D3D10CreateStateBlock(ID3D10Device *pDevice, D3D10_STATE_BLOCK_MASK *pStateBlockMask, ID3D10StateBlock **ppStateBlock);
#ifdef __cplusplus
}
#endif //__cplusplus
//----------------------------------------------------------------------------
// D3D10_COMPILE & D3D10_EFFECT flags:
// -------------------------------------
//
// These flags are passed in when creating an effect, and affect
// either compilation behavior or runtime effect behavior
//
// D3D10_COMPILE_CHILD_EFFECT
// Compile this .fx file to a child effect. Child effects have no initializers
// for any shared values as these are initialied in the master effect (pool).
//
// D3D10_COMPILE_DISABLE_PERFORMANCE_MODE
// By default, performance mode is enabled. Performance mode disallows
// mutable state objects by preventing non-literal expressions from appearing in
// state object definitions. Specifying this flag will disable the mode and allow
// for mutable state objects.
//
// D3D10_EFFECT_SINGLE_THREADED
// Do not attempt to synchronize with other threads loading effects into the
// same pool.
//
//----------------------------------------------------------------------------
#define D3D10_COMPILE_CHILD_EFFECT (1 << 0)
#define D3D10_COMPILE_DISABLE_PERFORMANCE_MODE (1 << 1)
#define D3D10_EFFECT_SINGLE_THREADED (1 << 3)
//----------------------------------------------------------------------------
// D3D10_EFFECT_VARIABLE flags:
// ----------------------------
//
// These flags describe an effect variable (global or annotation),
// and are returned in D3D10_EFFECT_VARIABLE_DESC::Flags.
//
// D3D10_EFFECT_VARIABLE_POOLED
// Indicates that the this variable or constant buffer resides
// in an effect pool. If this flag is not set, then the variable resides
// in a standalone effect (if ID3D10Effect::GetPool returns NULL)
// or a child effect (if ID3D10Effect::GetPool returns non-NULL)
//
// D3D10_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.
//----------------------------------------------------------------------------
#define D3D10_EFFECT_VARIABLE_POOLED (1 << 0)
#define D3D10_EFFECT_VARIABLE_ANNOTATION (1 << 1)
//////////////////////////////////////////////////////////////////////////////
// ID3D10EffectType //////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
//----------------------------------------------------------------------------
// D3D10_EFFECT_TYPE_DESC:
//
// Retrieved by ID3D10EffectType::GetDesc()
//----------------------------------------------------------------------------
typedef struct _D3D10_EFFECT_TYPE_DESC
{
LPCSTR TypeName; // Name of the type
// (e.g. "float4" or "MyStruct")
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -