Ada计算机图形DirectX之D3D10shader

----------------------------------------
-- File : d3d10shader.ads             --
-- Translator:Dongfeng.Gu,2018/10/21  --
-- Mail: 515639@qq.com                --
-- Progress:100%                      --
----------------------------------------

with win32;                        use win32;
with win32.winnt;                  use win32.winnt;
with win32.windef;                 use win32.windef;
with win32.rpcdce;                 use win32.rpcdce;
with win32.Objbase;                use win32.Objbase;

with Interfaces.C;

with d3d10;                        use d3d10;
with d3d10misc;                    use d3d10misc;

package D3D10shader is

   function Shift_Left(A:dword;B:Natural) return dword with import,convention=>Intrinsic;
   function Lsh(A:dword;B:Natural) return dword is (Shift_Left(A,B));

   function Shift_Right(A:dword;B:Natural) return dword with import,convention=>Intrinsic;
   function Rsh(A:dword;B:Natural) return dword is (Shift_Right(A,B));

   use type Interfaces.C.unsigned_long;
   function D3D10_TX_VERSION(Major,Minor:DWORD) return dword is(Lsh(Character'Pos('T') ,24) or Lsh(Character'pos('X'),16) or Lsh((Major),8) or (Minor));


   D3D10_SHADER_DEBUG : constant dword:= Lsh( 1 , 0);

   D3D10_SHADER_SKIP_VALIDATION : constant dword:= Lsh( 1 , 1);

   D3D10_SHADER_SKIP_OPTIMIZATION : constant dword:= Lsh( 1 , 2);

   D3D10_SHADER_PACK_MATRIX_ROW_MAJOR : constant dword:= Lsh( 1 , 3);

   D3D10_SHADER_PACK_MATRIX_COLUMN_MAJOR : constant dword:= Lsh( 1 , 4);

   D3D10_SHADER_PARTIAL_PRECISION : constant dword:= Lsh( 1 , 5);

   D3D10_SHADER_FORCE_VS_SOFTWARE_NO_OPT : constant dword:= Lsh( 1 , 6);

   D3D10_SHADER_FORCE_PS_SOFTWARE_NO_OPT : constant dword:= Lsh( 1 , 7);

   D3D10_SHADER_NO_PRESHADER : constant dword:= Lsh( 1 , 8);

   D3D10_SHADER_AVOID_FLOW_CONTROL : constant dword:= Lsh( 1 , 9);

   D3D10_SHADER_PREFER_FLOW_CONTROL : constant dword:= Lsh( 1 , 10);

   D3D10_SHADER_ENABLE_STRICTNESS : constant dword:= Lsh( 1 , 11);

   D3D10_SHADER_ENABLE_BACKWARDS_COMPATIBILITY : constant dword:= Lsh( 1 , 12);

   D3D10_SHADER_IEEE_STRICTNESS : constant dword:= Lsh( 1 , 13);

   D3D10_SHADER_WARNINGS_ARE_ERRORS : constant dword:= Lsh( 1 , 18);

   D3D10_SHADER_OPTIMIZATION_LEVEL0 : constant dword:= Lsh( 1 , 14);

   D3D10_SHADER_OPTIMIZATION_LEVEL1 : constant := 0;

   D3D10_SHADER_OPTIMIZATION_LEVEL2 : constant dword:= (Lsh( 1 , 14) or Lsh( 1 , 15));

   D3D10_SHADER_OPTIMIZATION_LEVEL3 : constant dword:= Lsh( 1 , 15);

   type tagD3D10_SHADER_MACRO is record
      Name:LPCSTR;
      Definition:LPCSTR;
   end record;

   subtype D3D10_SHADER_MACRO is tagD3D10_SHADER_MACRO;
   type LPCD3D10_SHADER_MACRO is access constant tagD3D10_SHADER_MACRO;
   type LPD3D10_SHADER_MACRO is access all tagD3D10_SHADER_MACRO;

   type tagD3D10_SHADER_VARIABLE_CLASS is (D3D10_SVC_SCALAR,
                                           D3D10_SVC_VECTOR,
                                           D3D10_SVC_MATRIX_ROWS,
                                           D3D10_SVC_MATRIX_COLUMNS,
                                           D3D10_SVC_OBJECT,
                                           D3D10_SVC_STRUCT,
                                           D3D11_SVC_INTERFACE_CLASS,
                                           D3D11_SVC_INTERFACE_POINTER,
                                           D3D10_SVC_FORCE_DWORD);
   for tagD3D10_SHADER_VARIABLE_CLASS use (D3D10_SVC_SCALAR=>0,
                                           D3D10_SVC_VECTOR=>1,
                                           D3D10_SVC_MATRIX_ROWS=>2,
                                           D3D10_SVC_MATRIX_COLUMNS=>3,
                                           D3D10_SVC_OBJECT=>4,
                                           D3D10_SVC_STRUCT=>5,
                                           D3D11_SVC_INTERFACE_CLASS=>6,
                                           D3D11_SVC_INTERFACE_POINTER=>7,
                                           D3D10_SVC_FORCE_DWORD=>16#7fffffff#);

   subtype D3D10_SHADER_VARIABLE_CLASS is tagD3D10_SHADER_VARIABLE_CLASS;

   type LPD3D10_SHADER_VARIABLE_CLASS is access tagD3D10_SHADER_VARIABLE_CLASS;

   type tagD3D10_SHADER_VARIABLE_FLAGS is (D3D10_SVF_USERPACKED,
                                           D3D10_SVF_USED,
                                           D3D11_SVF_INTERFACE_POINTER,
                                           D3D11_SVF_INTERFACE_PARAMETER,
                                           D3D10_SVF_FORCE_DWORD);
   for tagD3D10_SHADER_VARIABLE_FLAGS use (D3D10_SVF_USERPACKED=>1,
                                           D3D10_SVF_USED=>2,
                                           D3D11_SVF_INTERFACE_POINTER=>4,
                                           D3D11_SVF_INTERFACE_PARAMETER=>8,
                                           D3D10_SVF_FORCE_DWORD=>16#7fffffff#);

   subtype D3D10_SHADER_VARIABLE_FLAGS is tagD3D10_SHADER_VARIABLE_FLAGS;

   type LPD3D10_SHADER_VARIABLE_FLAGS is access tagD3D10_SHADER_VARIABLE_FLAGS;

   type tagD3D10_SHADER_VARIABLE_TYPE is (D3D10_SVT_VOID,
                                          D3D10_SVT_BOOL,
                                          D3D10_SVT_INT,
                                          D3D10_SVT_FLOAT,
                                          D3D10_SVT_STRING,
                                          D3D10_SVT_TEXTURE,
                                          D3D10_SVT_TEXTURE1D,
                                          D3D10_SVT_TEXTURE2D,
                                          D3D10_SVT_TEXTURE3D,
                                          D3D10_SVT_TEXTURECUBE,
                                          D3D10_SVT_SAMPLER,
                                          D3D10_SVT_PIXELSHADER,
                                          D3D10_SVT_VERTEXSHADER,
                                          D3D10_SVT_UINT,
                                          D3D10_SVT_UINT8,
                                          D3D10_SVT_GEOMETRYSHADER,
                                          D3D10_SVT_RASTERIZER,
                                          D3D10_SVT_DEPTHSTENCIL,
                                          D3D10_SVT_BLEND,
                                          D3D10_SVT_BUFFER,
                                          D3D10_SVT_CBUFFER,
                                          D3D10_SVT_TBUFFER,
                                          D3D10_SVT_TEXTURE1DARRAY,
                                          D3D10_SVT_TEXTURE2DARRAY,
                                          D3D10_SVT_RENDERTARGETVIEW,
                                          D3D10_SVT_DEPTHSTENCILVIEW,
                                          D3D10_SVT_TEXTURE2DMS,
                                          D3D10_SVT_TEXTURE2DMSARRAY,
                                          D3D10_SVT_TEXTURECUBEARRAY,
                                          D3D11_SVT_HULLSHADER,
                                          D3D11_SVT_DOMAINSHADER,
                                          D3D11_SVT_INTERFACE_POINTER,
                                          D3D11_SVT_COMPUTESHADER,
                                          D3D11_SVT_DOUBLE,
                                          D3D11_SVT_RWTEXTURE1D,
                                          D3D11_SVT_RWTEXTURE1DARRAY,
                                          D3D11_SVT_RWTEXTURE2D,
                                          D3D11_SVT_RWTEXTURE2DARRAY,
                                          D3D11_SVT_RWTEXTURE3D,
                                          D3D11_SVT_RWBUFFER,
                                          D3D11_SVT_BYTEADDRESS_BUFFER,
                                          D3D11_SVT_RWBYTEADDRESS_BUFFER,
                                          D3D11_SVT_STRUCTURED_BUFFER,
                                          D3D11_SVT_RWSTRUCTURED_BUFFER,
                                          D3D11_SVT_APPEND_STRUCTURED_BUFFER,
                                          D3D11_SVT_CONSUME_STRUCTURED_BUFFER,
                                          D3D10_SVT_FORCE_DWORD);
   for tagD3D10_SHADER_VARIABLE_TYPE use (D3D10_SVT_VOID=>0,
                                          D3D10_SVT_BOOL=>1,
                                          D3D10_SVT_INT=>2,
                                          D3D10_SVT_FLOAT=>3,
                                          D3D10_SVT_STRING=>4,
                                          D3D10_SVT_TEXTURE=>5,
                                          D3D10_SVT_TEXTURE1D=>6,
                                          D3D10_SVT_TEXTURE2D=>7,
                                          D3D10_SVT_TEXTURE3D=>8,
                                          D3D10_SVT_TEXTURECUBE=>9,
                                          D3D10_SVT_SAMPLER=>10,
                                          D3D10_SVT_PIXELSHADER=>15,
                                          D3D10_SVT_VERTEXSHADER=>16,
                                          D3D10_SVT_UINT=>19,
                                          D3D10_SVT_UINT8=>20,
                                          D3D10_SVT_GEOMETRYSHADER=>21,
                                          D3D10_SVT_RASTERIZER=>22,
                                          D3D10_SVT_DEPTHSTENCIL=>23,
                                          D3D10_SVT_BLEND=>24,
                                          D3D10_SVT_BUFFER=>25,
                                          D3D10_SVT_CBUFFER=>26,
                                          D3D10_SVT_TBUFFER=>27,
                                          D3D10_SVT_TEXTURE1DARRAY=>28,
                                          D3D10_SVT_TEXTURE2DARRAY=>29,
                                          D3D10_SVT_RENDERTARGETVIEW=>30,
                                          D3D10_SVT_DEPTHSTENCILVIEW=>31,
                                          D3D10_SVT_TEXTURE2DMS=>32,
                                          D3D10_SVT_TEXTURE2DMSARRAY=>33,
                                          D3D10_SVT_TEXTURECUBEARRAY=>34,
                                          D3D11_SVT_HULLSHADER=>35,
                                          D3D11_SVT_DOMAINSHADER=>36,
                                          D3D11_SVT_INTERFACE_POINTER=>37,
                                          D3D11_SVT_COMPUTESHADER=>38,
                                          D3D11_SVT_DOUBLE=>39,
                                          D3D11_SVT_RWTEXTURE1D=>40,
                                          D3D11_SVT_RWTEXTURE1DARRAY=>41,
                                          D3D11_SVT_RWTEXTURE2D=>42,
                                          D3D11_SVT_RWTEXTURE2DARRAY=>43,
                                          D3D11_SVT_RWTEXTURE3D=>44,
                                          D3D11_SVT_RWBUFFER=>45,
                                          D3D11_SVT_BYTEADDRESS_BUFFER=>46,
                                          D3D11_SVT_RWBYTEADDRESS_BUFFER=>47,
                                          D3D11_SVT_STRUCTURED_BUFFER=>48,
                                          D3D11_SVT_RWSTRUCTURED_BUFFER=>49,
                                          D3D11_SVT_APPEND_STRUCTURED_BUFFER=>50,
                                          D3D11_SVT_CONSUME_STRUCTURED_BUFFER=>51,
                                          D3D10_SVT_FORCE_DWORD=>16#7fffffff#);

   subtype D3D10_SHADER_VARIABLE_TYPE is tagD3D10_SHADER_VARIABLE_TYPE;

   type LPD3D10_SHADER_VARIABLE_TYPE is access tagD3D10_SHADER_VARIABLE_TYPE;

   type tagD3D10_SHADER_INPUT_FLAGS is (D3D10_SIF_USERPACKED,
                                        D3D10_SIF_COMPARISON_SAMPLER,
                                        D3D10_SIF_TEXTURE_COMPONENT_0,
                                        D3D10_SIF_TEXTURE_COMPONENT_1,
                                        D3D10_SIF_TEXTURE_COMPONENTS,
                                        D3D10_SIF_FORCE_DWORD);
   for tagD3D10_SHADER_INPUT_FLAGS use (D3D10_SIF_USERPACKED=>1,
                                        D3D10_SIF_COMPARISON_SAMPLER=>2,
                                        D3D10_SIF_TEXTURE_COMPONENT_0=>4,
                                        D3D10_SIF_TEXTURE_COMPONENT_1=>8,
                                        D3D10_SIF_TEXTURE_COMPONENTS=>12,
                                        D3D10_SIF_FORCE_DWORD=>16#7fffffff#);

   subtype D3D10_SHADER_INPUT_FLAGS is tagD3D10_SHADER_INPUT_FLAGS;

   type LPD3D10_SHADER_INPUT_FLAGS is access tagD3D10_SHADER_INPUT_FLAGS;

   type tagD3D10_SHADER_INPUT_TYPE is (D3D10_SIT_CBUFFER, -- 0
                                       D3D10_SIT_TBUFFER,
                                       D3D10_SIT_TEXTURE,
                                       D3D10_SIT_SAMPLER,
                                       D3D11_SIT_UAV_RWTYPED,
                                       D3D11_SIT_STRUCTURED,
                                       D3D11_SIT_UAV_RWSTRUCTURED,
                                       D3D11_SIT_BYTEADDRESS,
                                       D3D11_SIT_UAV_RWBYTEADDRESS,
                                       D3D11_SIT_UAV_APPEND_STRUCTURED,
                                       D3D11_SIT_UAV_CONSUME_STRUCTURED,
                                       D3D11_SIT_UAV_RWSTRUCTURED_WITH_COUNTER);

   subtype D3D10_SHADER_INPUT_TYPE is tagD3D10_SHADER_INPUT_TYPE;

   type LPD3D10_SHADER_INPUT_TYPE is access tagD3D10_SHADER_INPUT_TYPE;

   type tagD3D10_SHADER_CBUFFER_FLAGS is (D3D10_CBF_USERPACKED,
                                          D3D10_CBF_FORCE_DWORD);
   for tagD3D10_SHADER_CBUFFER_FLAGS use (D3D10_CBF_USERPACKED=>1,
                                          D3D10_CBF_FORCE_DWORD=>16#7fffffff#);

   subtype D3D10_SHADER_CBUFFER_FLAGS is tagD3D10_SHADER_CBUFFER_FLAGS;

   type LPD3D10_SHADER_CBUFFER_FLAGS is access tagD3D10_SHADER_CBUFFER_FLAGS;

   type tagD3D10_CBUFFER_TYPE is (D3D10_CT_CBUFFER,
                                  D3D10_CT_TBUFFER);

   subtype D3D10_CBUFFER_TYPE is tagD3D10_CBUFFER_TYPE;

   type LPD3D10_CBUFFER_TYPE is access tagD3D10_CBUFFER_TYPE;

   type tagD3D10_NAME is (D3D10_NAME_UNDEFINED,
                          D3D10_NAME_POSITION,
                          D3D10_NAME_CLIP_DISTANCE,
                          D3D10_NAME_CULL_DISTANCE,
                          D3D10_NAME_RENDER_TARGET_ARRAY_INDEX,
                          D3D10_NAME_VIEWPORT_ARRAY_INDEX,
                          D3D10_NAME_VERTEX_ID,
                          D3D10_NAME_PRIMITIVE_ID,
                          D3D10_NAME_INSTANCE_ID,
                          D3D10_NAME_IS_FRONT_FACE,
                          D3D10_NAME_SAMPLE_INDEX,
                          D3D11_NAME_FINAL_QUAD_EDGE_TESSFACTOR,
                          D3D11_NAME_FINAL_QUAD_INSIDE_TESSFACTOR,
                          D3D11_NAME_FINAL_TRI_EDGE_TESSFACTOR,
                          D3D11_NAME_FINAL_TRI_INSIDE_TESSFACTOR,
                          D3D11_NAME_FINAL_LINE_DETAIL_TESSFACTOR,
                          D3D11_NAME_FINAL_LINE_DENSITY_TESSFACTOR,
                          D3D10_NAME_TARGET,
                          D3D10_NAME_DEPTH,
                          D3D10_NAME_COVERAGE,
                          D3D11_NAME_DEPTH_GREATER_EQUAL,
                          D3D11_NAME_DEPTH_LESS_EQUAL);
   for tagD3D10_NAME use (D3D10_NAME_UNDEFINED=>0,
                          D3D10_NAME_POSITION=>1,
                          D3D10_NAME_CLIP_DISTANCE=>2,
                          D3D10_NAME_CULL_DISTANCE=>3,
                          D3D10_NAME_RENDER_TARGET_ARRAY_INDEX=>4,
                          D3D10_NAME_VIEWPORT_ARRAY_INDEX=>5,
                          D3D10_NAME_VERTEX_ID=>6,
                          D3D10_NAME_PRIMITIVE_ID=>7,
                          D3D10_NAME_INSTANCE_ID=>8,
                          D3D10_NAME_IS_FRONT_FACE=>9,
                          D3D10_NAME_SAMPLE_INDEX=>10,
                          D3D11_NAME_FINAL_QUAD_EDGE_TESSFACTOR=>11,
                          D3D11_NAME_FINAL_QUAD_INSIDE_TESSFACTOR=>12,
                          D3D11_NAME_FINAL_TRI_EDGE_TESSFACTOR=>13,
                          D3D11_NAME_FINAL_TRI_INSIDE_TESSFACTOR=>14,
                          D3D11_NAME_FINAL_LINE_DETAIL_TESSFACTOR=>15,
                          D3D11_NAME_FINAL_LINE_DENSITY_TESSFACTOR=>16,
                          D3D10_NAME_TARGET=>64,
                          D3D10_NAME_DEPTH=>65,
                          D3D10_NAME_COVERAGE=>66,
                          D3D11_NAME_DEPTH_GREATER_EQUAL=>67,
                          D3D11_NAME_DEPTH_LESS_EQUAL=>68);


   subtype D3D10_NAME is tagD3D10_NAME;

   type LPD3D10_NAME is access tagD3D10_NAME;

   type D3D10_RESOURCE_RETURN_TYPE is (D3D10_RETURN_TYPE_UNORM,
                                       D3D10_RETURN_TYPE_SNORM,
                                       D3D10_RETURN_TYPE_SINT,
                                       D3D10_RETURN_TYPE_UINT,
                                       D3D10_RETURN_TYPE_FLOAT,
                                       D3D10_RETURN_TYPE_MIXED);
   for D3D10_RESOURCE_RETURN_TYPE use (D3D10_RETURN_TYPE_UNORM=>1,
                                       D3D10_RETURN_TYPE_SNORM=>2,
                                       D3D10_RETURN_TYPE_SINT=>3,
                                       D3D10_RETURN_TYPE_UINT=>4,
                                       D3D10_RETURN_TYPE_FLOAT=>5,
                                       D3D10_RETURN_TYPE_MIXED=>6);


   type LPD3D10_RESOURCE_RETURN_TYPE is access D3D10_RESOURCE_RETURN_TYPE;

   type D3D10_REGISTER_COMPONENT_TYPE is (D3D10_REGISTER_COMPONENT_UNKNOWN,
                                          D3D10_REGISTER_COMPONENT_UINT32,
                                          D3D10_REGISTER_COMPONENT_SINT32,
                                          D3D10_REGISTER_COMPONENT_FLOAT32);
   for D3D10_REGISTER_COMPONENT_TYPE use (D3D10_REGISTER_COMPONENT_UNKNOWN=>0,
                                          D3D10_REGISTER_COMPONENT_UINT32=>1,
                                          D3D10_REGISTER_COMPONENT_SINT32=>2,
                                          D3D10_REGISTER_COMPONENT_FLOAT32=>3);

   type LPD3D10_REGISTER_COMPONENT_TYPE is access D3D10_REGISTER_COMPONENT_TYPE;

   type tagD3D10_INCLUDE_TYPE is (D3D10_INCLUDE_LOCAL,
                                  D3D10_INCLUDE_SYSTEM,
                                  D3D10_INCLUDE_FORCE_DWORD);
   for tagD3D10_INCLUDE_TYPE use (D3D10_INCLUDE_LOCAL=>0,
                                  D3D10_INCLUDE_SYSTEM=>1,
                                  D3D10_INCLUDE_FORCE_DWORD=>16#7fffffff#);

   subtype D3D10_INCLUDE_TYPE is tagD3D10_INCLUDE_TYPE;

   type LPD3D10_INCLUDE_TYPE is access tagD3D10_INCLUDE_TYPE;

   type ID3D10Include;
   type LPID3D10INCLUDE is access all ID3D10Include;
   type LPLPID3D10Include is access all LPID3D10Include;
   subtype LPD3D10Include is LPID3D10Include;
   subtype LPLPD3D10Include is LPLPID3D10Include;


   type ID3D10Include is record
      Open:access procedure(THIS:LPID3D10Include;IncludeType:D3D10_INCLUDE_TYPE;pFileName:LPCSTR;pParentData:LPCVOID;ppData:LPLPCVOID;pBytes:LPUINT) with Convention=>Stdcall;
      Close:access procedure(THIS:LPID3D10Include;pData:LPCVOID) with Convention=>Stdcall;
   end record;

   type tagD3D10_SHADER_DESC is record
      Version:UINT;
      Creator:LPCSTR;
      Flags:UINT;
      ConstantBuffers:UINT;
      BoundResources:UINT;
      InputParameters:UINT;
      OutputParameters:UINT;
      InstructionCount:UINT;
      TempRegisterCount:UINT;
      TempArrayCount:UINT;
      DefCount:UINT;
      DclCount:UINT;
      TextureNormalInstructions:UINT;
      TextureLoadInstructions:UINT;
      TextureCompInstructions:UINT;
      TextureBiasInstructions:UINT;
      TextureGradientInstructions:UINT;
      FloatInstructionCount:UINT;
      IntInstructionCount:UINT;
      UintInstructionCount:UINT;
      StaticFlowControlCount:UINT;
      DynamicFlowControlCount:UINT;
      MacroInstructionCount:UINT;
      ArrayInstructionCount:UINT;
      CutInstructionCount:UINT;
      EmitInstructionCount:UINT;
      GSOutputTopology:D3D10_PRIMITIVE_TOPOLOGY;
      GSMaxOutputVertexCount:UINT;
   end record;

   subtype D3D10_SHADER_DESC is tagD3D10_SHADER_DESC;

   type LPD3D10_SHADER_DESC is access all tagD3D10_SHADER_DESC;

   type tagD3D10_SHADER_BUFFER_DESC is record
      Name:LPCSTR;
      Typ:D3D10_CBUFFER_TYPE;
      Variables:UINT;
      Size:UINT;
      uFlags:UINT;
   end record;

   subtype D3D10_SHADER_BUFFER_DESC is tagD3D10_SHADER_BUFFER_DESC;

   type LPD3D10_SHADER_BUFFER_DESC is access all tagD3D10_SHADER_BUFFER_DESC;

   type tagD3D10_SHADER_VARIABLE_DESC is record
      Name:LPCSTR;
      StartOffset:UINT;
      Size:UINT;
      uFlags:UINT;
      DefaultValue:LPVOID;
   end record;

   subtype D3D10_SHADER_VARIABLE_DESC is tagD3D10_SHADER_VARIABLE_DESC;

   type LPD3D10_SHADER_VARIABLE_DESC is access all tagD3D10_SHADER_VARIABLE_DESC;

   type tagD3D10_SHADER_TYPE_DESC is record
      Class:D3D10_SHADER_VARIABLE_CLASS;
      Typ:D3D10_SHADER_VARIABLE_TYPE;
      Rows:UINT;
      Columns:UINT;
      Elements:UINT;
      Members:UINT;
      Offset:UINT;
   end record;

   subtype D3D10_SHADER_TYPE_DESC is tagD3D10_SHADER_TYPE_DESC;

   subtype LPD3D10_SHADER_TYPE_DESC is tagD3D10_SHADER_TYPE_DESC;

   type tagD3D10_SHADER_INPUT_BIND_DESC is record
      Name:LPCSTR;
      Typ:D3D10_SHADER_INPUT_TYPE;
      BindPoint:UINT;
      BindCount:UINT;
      uFlags:UINT;
      ReturnType:D3D10_RESOURCE_RETURN_TYPE;
      Dimension:D3D10_SRV_DIMENSION;
      NumSamples:UINT;
   end record;

   subtype D3D10_SHADER_INPUT_BIND_DESC is tagD3D10_SHADER_INPUT_BIND_DESC;

   type LPD3D10_SHADER_INPUT_BIND_DESC is access all tagD3D10_SHADER_INPUT_BIND_DESC;

   type tagD3D10_SIGNATURE_PARAMETER_DESC is record
      SemanticName:LPCSTR;
      SemanticIndex:UINT;
      Register:UINT;
      SystemValueType:D3D10_NAME;
      ComponentType:D3D10_REGISTER_COMPONENT_TYPE;
      Mask:BYTE;
      ReadWriteMask:BYTE;
   end record;

   subtype D3D10_SIGNATURE_PARAMETER_DESC is tagD3D10_SIGNATURE_PARAMETER_DESC;

   type LPD3D10_SIGNATURE_PARAMETER_DESC is access all tagD3D10_SIGNATURE_PARAMETER_DESC;

   type ID3D10ShaderReflectionType;
   type LPID3D10SHADERREFLECTIONTYPE is access all ID3D10ShaderReflectionType;
   type LPLPID3D10ShaderReflectionType is access all LPID3D10ShaderReflectionType;
   subtype LPD3D10ShaderReflectionType is LPID3D10ShaderReflectionType;
   subtype LPLPD3D10ShaderReflectionType is LPLPID3D10ShaderReflectionType;

   IID_ID3D10ShaderReflectionType:constant win32.rpcdce.GUID:=(16#c530ad7d#,16#9b16#,16#4395#,(16#a9#,16#79#,16#ba#,16#2e#,16#cf#,16#f8#,16#3a#,16#dd#));
   type ID3D10ShaderReflectionType is record
      GetDesc:access procedure(THIS:LPID3D10ShaderReflectionType;pDesc:LPD3D10_SHADER_TYPE_DESC) with Convention=>Stdcall;
      GetMemberTypeByIndex:access function(THIS:LPID3D10ShaderReflectionType;Index:UINT) return ID3D10ShaderReflectionType with Convention=>Stdcall;
      GetMemberTypeByName:access function(THIS:LPID3D10ShaderReflectionType;Name:LPCSTR) return ID3D10ShaderReflectionType with Convention=>Stdcall;
      GetMemberTypeName:access function(THIS:LPID3D10ShaderReflectionType;Index:UINT) return LPCSTR with Convention=>Stdcall;
   end record;

   type ID3D10ShaderReflectionVariable;
   type LPID3D10SHADERREFLECTIONVARIABLE is access all ID3D10ShaderReflectionVariable;
   type LPLPID3D10ShaderReflectionVariable is access all LPID3D10ShaderReflectionVariable;
   subtype LPD3D10ShaderReflectionVariable is LPID3D10ShaderReflectionVariable;
   subtype LPLPD3D10ShaderReflectionVariable is LPLPID3D10ShaderReflectionVariable;

   IID_ID3D10ShaderReflectionVariable:constant win32.rpcdce.GUID:=(16#1bf63c95#,16#2650#,16#405d#,(16#99#,16#c1#,16#36#,16#36#,16#bd#,16#1d#,16#a0#,16#a1#));
   type ID3D10ShaderReflectionVariable is record
      GetDesc:access procedure(THIS:LPID3D10ShaderReflectionVariable;pDesc:LPD3D10_SHADER_VARIABLE_DESC) with Convention=>Stdcall;
      GetType:access function(THIS:LPID3D10ShaderReflectionVariable) return ID3D10ShaderReflectionType with Convention=>Stdcall;
   end record;

   type ID3D10ShaderReflectionConstantBuffer;
   type LPID3D10ShaderReflectionConstantBuffer is access all ID3D10ShaderReflectionConstantBuffer;
   type LPLPID3D10ShaderReflectionConstantBuffer is access all LPID3D10ShaderReflectionConstantBuffer;
   subtype LPD3D10ShaderReflectionConstantBuffer is LPID3D10ShaderReflectionConstantBuffer;
   subtype LPLPD3D10ShaderReflectionConstantBuffer is LPLPID3D10ShaderReflectionConstantBuffer;

   IID_ID3D10ShaderReflectionConstantBuffer:constant win32.rpcdce.GUID:=(16#66c66a94#,16#dddd#,16#4b62#,(16#a6#,16#6a#,16#f0#,16#da#,16#33#,16#c2#,16#b4#,16#d0#));
   type ID3D10ShaderReflectionConstantBuffer is record
      GetDesc:access procedure(THIS:LPID3D10ShaderReflectionConstantBuffer;pDesc:LPD3D10_SHADER_BUFFER_DESC) with Convention=>Stdcall;
      GetVariableByIndex:access function(THIS:LPID3D10ShaderReflectionConstantBuffer;Index:UINT) return ID3D10ShaderReflectionVariable with Convention=>Stdcall;
      GetVariableByName:access function(THIS:LPID3D10ShaderReflectionConstantBuffer;Name:LPCSTR) return ID3D10ShaderReflectionVariable with Convention=>Stdcall;
   end record;

   type ID3D10ShaderReflection;
   type LPID3D10SHADERREFLECTION is access all ID3D10ShaderReflection;
   type LPLPID3D10ShaderReflection is access all LPID3D10ShaderReflection;
   subtype LPD3D10ShaderReflection is LPID3D10ShaderReflection;
   subtype LPLPD3D10ShaderReflection is LPLPID3D10ShaderReflection;

   IID_ID3D10ShaderReflection:constant win32.rpcdce.GUID:=(16#d40e20b6#,16#f8f7#,16#42ad#,(16#ab#,16#20#,16#4b#,16#af#,16#8f#,16#15#,16#df#,16#aa#));
   type ID3D10ShaderReflection is record
      QueryInterface:access procedure(THIS:LPID3D10ShaderReflection;iid:REFIID;ppv:LPLPVOID) with Convention=>Stdcall;
      AddRef:access function(THIS:LPID3D10ShaderReflection) return ULONG with Convention=>Stdcall;
      Release:access function(THIS:LPID3D10ShaderReflection) return ULONG with Convention=>Stdcall;
      GetDesc:access procedure(THIS:LPID3D10ShaderReflection;pDesc:LPD3D10_SHADER_DESC) with Convention=>Stdcall;
      GetConstantBufferByIndex:access function(THIS:LPID3D10ShaderReflection;Index:UINT) return ID3D10ShaderReflectionConstantBuffer with Convention=>Stdcall;
      GetConstantBufferByName:access function(THIS:LPID3D10ShaderReflection;Name:LPCSTR) return ID3D10ShaderReflectionConstantBuffer with Convention=>Stdcall;
      GetResourceBindingDesc:access procedure(THIS:LPID3D10ShaderReflection;ResourceIndex:UINT;pDesc:LPD3D10_SHADER_INPUT_BIND_DESC) with Convention=>Stdcall;
      GetInputParameterDesc:access procedure(THIS:LPID3D10ShaderReflection;ParameterIndex:UINT;pDesc:LPD3D10_SIGNATURE_PARAMETER_DESC) with Convention=>Stdcall;
      GetOutputParameterDesc:access procedure(THIS:LPID3D10ShaderReflection;ParameterIndex:UINT;pDesc:LPD3D10_SIGNATURE_PARAMETER_DESC) with Convention=>Stdcall;
   end record;

   function D3D10CompileShader(pSrcData:LPCSTR;SrcDataLen:SIZE_T;pFileName:LPCSTR;pDefines:LPCD3D10_SHADER_MACRO;pInclude:LPD3D10INCLUDE;pFunctionName:LPCSTR;pProfile:LPCSTR;Flags:UINT;ppShader:LPLPID3D10Blob;ppErrorMsgs:LPLPID3D10Blob) return HRESULT with Import,Convention=>stdcall,external_name=>"D3D10CompileShader";

   function D3D10DisassembleShader(pShader:LPCvoid;BytecodeLength:SIZE_T;EnableColorCode:BOOL;pComments:LPCSTR;ppDisassembly:LPLPID3D10Blob) return HRESULT with Import,Convention=>stdcall,external_name=>"D3D10DisassembleShader";

   function D3D10GetPixelShaderProfile(pDevice:LPID3D10Device) return LPCSTR with Import,Convention=>stdcall,external_name=>"D3D10GetPixelShaderProfile";

   function D3D10GetVertexShaderProfile(pDevice:LPID3D10Device) return LPCSTR with Import,Convention=>stdcall,external_name=>"D3D10GetVertexShaderProfile";

   function D3D10GetGeometryShaderProfile(pDevice:LPID3D10Device) return LPCSTR with Import,Convention=>stdcall,external_name=>"D3D10GetGeometryShaderProfile";

   function D3D10ReflectShader(pShaderBytecode:LPCvoid;BytecodeLength:SIZE_T;ppReflector:LPLPID3D10ShaderReflection) return HRESULT with Import,Convention=>stdcall,external_name=>"D3D10ReflectShader";

   function D3D10PreprocessShader(pSrcData:LPCSTR;SrcDataSize:SIZE_T;pFileName:LPCSTR;pDefines:LPCD3D10_SHADER_MACRO;pInclude:LPD3D10INCLUDE;ppShaderText:LPLPID3D10Blob;ppErrorMsgs:LPLPID3D10Blob) return HRESULT with Import,Convention=>stdcall,external_name=>"D3D10PreprocessShader";

   function D3D10GetInputSignatureBlob(pShaderBytecode:LPCvoid;BytecodeLength:SIZE_T;ppSignatureBlob:LPLPID3D10Blob) return HRESULT with Import,Convention=>stdcall,external_name=>"D3D10GetInputSignatureBlob";

   function D3D10GetOutputSignatureBlob(pShaderBytecode:LPCvoid;BytecodeLength:SIZE_T;ppSignatureBlob:LPLPID3D10Blob) return HRESULT with Import,Convention=>stdcall,external_name=>"D3D10GetOutputSignatureBlob";

   function D3D10GetInputAndOutputSignatureBlob(pShaderBytecode:LPCvoid;BytecodeLength:SIZE_T;ppSignatureBlob:LPLPID3D10Blob) return HRESULT with Import,Convention=>stdcall,external_name=>"D3D10GetInputAndOutputSignatureBlob";

   function D3D10GetShaderDebugInfo(pShaderBytecode:LPCvoid;BytecodeLength:SIZE_T;ppDebugInfo:LPLPID3D10Blob) return HRESULT with Import,Convention=>stdcall,external_name=>"D3D10GetShaderDebugInfo";


   --
   -- THE END.
   --

end D3D10shader;





















 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值