#pragma once enum class ParameterClass : uint16_t // D3DXPARAMETER_CLASS { Scalar, Vector, MatrixRows, MatrixColumns, Object, Struct }; enum class ParameterType : uint16_t // D3DXPARAMETER_TYPE { Void, Bool, Int, Float, String, Texture, Texture1D, Texture2D, Texture3D, TextureCube, Sampler, Sampler1D, Sampler2D, Sampler3D, SamplerCube, PixelShader, VertexShader, PixelFragment, VertexFragment, Unsupported }; struct StructMemberInfo // D3DXSHADER_STRUCTMEMBERINFO { be name; be typeInfo; }; struct TypeInfo // D3DXSHADER_TYPEINFO { be parameterClass; be parameterType; be rows; be columns; be elements; be structMembers; be structMemberInfo; }; enum class RegisterSet : uint16_t // D3DXREGISTER_SET { Bool, Int4, Float4, Sampler }; struct ConstantInfo // D3DXSHADER_CONSTANTINFO { be name; be registerSet; be registerIndex; be registerCount; be reserved; be typeInfo; be defaultValue; }; struct ConstantTable // D3DXSHADER_CONSTANTTABLE { be size; be creator; be version; be constants; be constantInfo; be flags; be target; }; struct ConstantTableContainer { be size; ConstantTable constantTable; };