1
0
mirror of https://github.com/Halofreak1990/XFXFramework synced 2024-12-26 13:49:34 +01:00
Halofreak1990 1bf933432b List class now works.
TextureCollection is broken because it can somehow not resolve Texture as template argument for the List it uses.
Added missing BinaryWriter and TextWriter classes to System::IO namespace
Modified BinaryReader
Added PacketReader and PacketWriter classes to XFX::Net namespace
2011-03-10 22:55:43 +00:00

769 lines
16 KiB
C++

/********************************************************
* Enums.h *
* *
* XFX::Graphics enumeration definition file *
* Copyright © XFX Team. All Rights Reserved *
********************************************************/
#ifndef _GRAPHICS_ENUMS_
#define _GRAPHICS_ENUMS_
namespace XFX
{
namespace Graphics
{
/// <summary>
/// Defines color blending factors.
/// </summary>
struct Blend
{
enum type
{
Zero = 1,
One = 2,
SourceColor = 3,
InversourceColor = 4,
SourceAlpha = 5,
InverseSourceAlpha = 6,
Destinationalpha = 7,
InverseDestinationAlpha = 8,
DestinationColor = 9,
InverseDestinationColor = 10,
SourceAlphaSaturation = 11,
BothSourceAlpha = 12,
BothInverseSourceAlpha = 13,
BlendFactor = 14,
InverseBlendFactor = 15
};
};
/// <summary>
/// Defines how to combine a source color with the destination color already on the render target for color blending.
/// </summary>
struct BlendFunction
{
enum type
{
Add = 1,
Subtract = 2,
ReverseSubtract = 3,
Min = 4,
Max = 5
};
};
/// <summary>
/// Specifies Special Usage of the buffer contents.
/// </summary>
struct BufferUsage
{
enum type
{
None = 0,
Points = 0x40,
WriteOnly = 8
};
};
/// <summary>
/// Specifies the buffer to use when calling GraphicsDevice.Clear.
/// </summary>
struct ClearOptions
{
enum type
{
Depth = 2,
Stencil = 4,
Target = 1
};
};
/// <summary>
/// Defines the color channels that can be chosen for a per-channel write to a render target color buffer.
/// </summary>
struct ColorWriteChannels
{
enum type
{
All = 15,
Alpha = 8,
Blue = 4,
Green = 2,
None = 0,
Red = 1
};
};
/// <summary>
/// Defines comparison functions that can be chosen for alpha, stencil, or depth-buffer tests.
/// </summary>
struct CompareFunction
{
enum type
{
Never = 1,
Less = 2,
Equal = 3,
LessEqual = 4,
Greater = 5,
NotEqual = 6,
GreaterEqual = 7,
Always = 8
};
};
/// <summary>
/// Identifies an include file as a local or system resource.
/// </summary>
struct CompilerIncludeHandlerType
{
enum type
{
Local,
System
};
};
/// <summary>
/// Defines optimization options that may be chosen for shader and effect code compilation.
/// </summary>
struct CompilerOptions
{
enum type
{
AvoidFlowControl,
Debug,
ForcePixelShaderSoftwareNoOptimizations,
ForceVertexShaderSoftwareNoOptimizations,
None,
NoPreShader,
NotCloneable,
PackMatrixColumnMajor,
PackMatrixRowMajor,
PartialPrecision,
PreferFlowControl,
SkipOptimization,
SkipValidation
};
};
/// <summary>
/// Defines the faces of a cube map in the TextureCube class type.
/// </summary>
struct CubeMapFace
{
enum type
{
NegativeX = 1,
NegativeY = 3,
NegativeZ = 5,
PositiveX = 0,
PositiveY = 2,
PositiveZ = 4
};
};
/// <summary>
/// Defines winding orders that may be used to identify back faces for culling.
/// </summary>
struct CullMode
{
enum type
{
None = 1,
CullClockwiseFace = 2,
CullCounterClockwiseFace = 3
};
};
/// <summary>
/// Defines the format of data in a depth buffer.
/// </summary>
struct DepthFormat
{
enum type
{
Depth15Stencil1 = 56,
Depth16 = 54,
Depth24 = 51,
Depth24Stencil8 = 48,
Depth24Stencil8Single = 49,
Depth24Stencil4 = 50,
Depth32 = 52,
Unknown = -1
};
};
/// <summary>
/// Specifies the type of device driver.
/// </summary>
struct DeviceType
{
enum type
{
Hardware = 1,
NullReference = 4,
Reference = 2
};
};
/// <summary>
/// Defines classes that can be used for effect parameters or shader constants.
/// </summary>
struct EffectParameterClass
{
enum type
{
MatrixColumns,
MatrixRows,
Object,
Scalar,
Struct,
Vector
};
};
/// <summary>
/// Describes options for filling the vertices and lines that define a primitive.
/// </summary>
struct FillMode
{
enum type
{
Point = 1,
Solid = 3,
WireFrame = 2
};
};
/// <summary>
/// Defines modes describing how to filter an image or mipmap when it is minified or magnified to fit a set of vertices.
/// </summary>
struct FilterOptions
{
enum type
{
Box = 5,
Dither = 524288,
DitherDiffusion = 1048576,
Linear = 3,
Mirror = 458752,
MirrorU = 65536,
MirrorV = 131072,
MirrorW = 262144,
None = 1,
Point = 2,
Srgb = 6291456,
SrgbIn = 2097152,
SrgbOut = 4194304,
Triangle = 4
};
};
/// <summary>
/// Defines constants that describe the fog mode.
/// </summary>
struct FogMode
{
enum type
{
Exponent = 1,
ExponentSquared = 2,
Linear = 3,
None = 0
};
};
/// <summary>
/// Describes the status of the device.
/// </summary>
struct GraphicsDeviceStatus
{
enum type
{
Lost = 1,
Normal = 0,
NotReset = 2
};
};
/// <summary>
/// Defines supported image file formats that may be used for textures.
/// </summary>
struct ImageFileFormat
{
enum type
{
Bmp = 0,
Dds = 4,
Dib = 6,
Hdr = 7,
Jpg = 1,
Pfm = 8,
Png = 3,
Ppm = 5,
Tga = 2
};
};
/// <summary>
/// Defines the size of an element of an index buffer.
/// </summary>
struct IndexElementSize
{
enum type
{
SixteenBits,
ThirtyTwoBits
};
};
/// <summary>
/// Defines the levels of full-scene multisampling that the game machine can apply.
/// </summary>
struct MultiSampleType
{
enum type
{
SixteenSamples = 16,
FifteenSamples = 15,
FourteenSamples = 14,
ThirteenSamples = 13,
TwelveSamples = 12,
ElevenSamples = 11,
TenSamples = 10,
NineSamples = 9,
EightSamples = 8,
SevenSamples = 7,
SixSamples = 6,
FiveSamples = 5,
FourSamples = 4,
ThreeSamples = 3,
TwoSamples = 2,
NonMaskable = 1,
None = 0
};
};
/// <summary>
/// Defines flags that describe the relationship between the adapter refresh rate and the rate at which GraphicsDevice.Present operations are completed.
/// </summary>
struct PresentInterval
{
enum type
{
Default = 0,
Four = 8,
Immediate = -2147483648,
One = 1,
Three = 4,
Two = 2
};
};
/// <summary>
/// Defines flags that control the behavior of the back buffer and depth buffer.
/// </summary>
struct PresentOptions
{
enum type
{
DeviceClip = 4,
DiscardDepthStencil = 2,
None = 0,
Video = 16
};
};
/// <summary>
/// Defines how data in a vertex stream is interpreted during a draw call.
/// </summary>
struct PrimitiveType
{
enum type
{
LineList = 2,
LineStrip = 3,
PointList = 1,
TriangleFan = 6,
TriangleList = 4,
TriangleStrip = 5
};
};
/// <summary>
/// Defines options for querying device resource formats.
/// </summary>
struct QueryUsages
{
enum type
{
Filter = 131072,
None = 0,
PostPixelShaderRendering = 524288,
SrgbRead = 65536,
SrgbWrite = 262144,
VertexTexture = 1048576,
WrapAndMip = 2097152
};
};
/// <summary>
/// Determines how render target data is used once a new render target is set.
/// </summary>
struct RenderTargetUsage
{
enum type
{
DiscardContents,
PlatformContents,
PreserveContents
};
};
/// <summary>
/// Defines resource types.
/// </summary>
struct ResourceType
{
enum type
{
DepthStencilBuffer = 1,
IndexBuffer = 7,
RenderTarget = 8,
Texture2D = 3,
Texture3D = 4,
Texture3DVolume = 2,
TextureCube = 5,
VertexBuffer = 6
};
};
/// <summary>
/// Defines options for saving the graphics device state before and after an effect technique is applied.
/// </summary>
struct SaveStateMode
{
enum type
{
None,
SaveState
};
};
/// <summary>
/// Describes whether existing buffer data will be overwritten or discarded during a SetData operation.
/// </summary>
struct SetDataOptions
{
enum type
{
Discard = 8192,
None = 0,
NoOverwrite = 4096
};
};
/// <summary>
/// Defines vertex and pixel shader versions.
/// </summary>
struct ShaderProfile
{
enum type
{
PS_1_1,
PS_1_2,
PS_1_3,
VS_1_1,
XPS_1_1, //Denotes XBOX specific shader configuration
XVS_1_1 //Denotes XBOX specific shader configuration
};
};
/// <summary>
/// Defines the data type of a shader register.
/// </summary>
struct ShaderRegisterSet
{
enum type
{
Boolean = 0, //Boolean value.
Float = 2, //4D floating-point number.
Int4 = 1, //4D integer number.
Sampler = 3 //The register contains 4D sampler data.
};
};
/// <summary>
/// The following flags are used to specify sprite blending rendering options to the flags parameter in SpriteBatch.Begin:
/// </summary>
struct SpriteBlendMode
{
enum type
{
Additive = 2, //Enable Additive blending.
AlphaBlend = 1, //Enable Alpha blending.
None = 0 //No blending specified.
};
};
/// <summary>
/// Defines sprite rotation options.
/// </summary>
struct SpriteEffects
{
enum type
{
FlipHorizontally = 1, //Rotate 180 degrees about the Y axis before rendering.
FlipVertically = 0x100, //Rotate 180 degrees about the X axis before rendering.
None = 0 //No rotations specified.
};
};
/// <summary>
/// Defines sprite sort-rendering options.
/// </summary>
struct SpriteSortMode
{
enum type
{
BackToFront = 3,
Deferred = 1,
FrontToBack = 4,
Immediate = 0,
Texture_ = 2
};
};
/// <summary>
/// Defines stencil buffer operations.
/// </summary>
struct StencilOperation
{
enum type
{
Decrement = 8,
DecrementSaturation = 5,
Increment = 7,
IncrementSaturation = 4,
Invert = 6,
Keep = 1,
Replace = 3,
Zero = 2
};
};
/// <summary>
/// Defines various types of surface formats.
/// </summary>
struct SurfaceFormat
{
enum type
{
Alpha8 = 15,
Bgr233 = 16,
Bgr24 = 17,
Bgr32 = 2,
Bgr444 = 13,
Bgr555 = 11,
Bgr565 = 9,
Bgra1010102 = 3,
Bgra2338 = 14,
Bgra4444 = 12,
Bgra5551 = 10,
Color = 1,
Depth15Stencil1 = 56,
Depth16 = 54,
Depth24 = 51,
Depth24Stencil4 = 50,
Depth24Stencil8 = 48,
Depth24Stencil8Single = 49,
Depth32 = 52,
Dxt1 = 28,
Dxt2 = 29,
Dxt3 = 30,
Dxt4 = 31,
Dxt5 = 32,
HalfSingle = 25,
HalfVector2 = 26,
HalfVector4 = 27,
Luminance16 = 34,
Luminance8 = 33,
LuminanceAlpha16 = 36,
LuminanceAlpha8 = 35,
Multi2Bgra32 = 47,
NormalizedAlpha1010102 = 41,
NormalizedByte2 = 18,
NormalizedByte2Computed = 42,
NormalizedByte4 = 19,
NormalizedLuminance16 = 39,
NormalizedLuminance32 = 40,
NormalizedShort2 = 20,
Normalizedshort4 = 21,
Palette8 = 37,
PaletteAlpha16 = 38,
Rg32 = 7,
Rgb32 = 5,
Rgba1010102 = 6,
Rgba32 = 4,
Rgba64 = 8,
Single = 22,
Unknown = -1,
Vector2 = 23,
Vector4 = 24,
VideoGrGb = 45,
VideoRgBg = 46,
VideoUyVy = 44,
VideoYuYv = 43
};
};
/// <summary>
/// Defines how the device front buffer and back buffer are to be swapped when GraphicsDevice.Present is called.
/// </summary>
struct SwapEffect
{
enum type
{
Copy = 3,
Default = 1,
Discard = 1,
Flip = 2
};
};
/// <summary>
/// Defines constants that describe supported texture-addressing modes.
/// </summary>
struct TextureAddressMode
{
enum type
{
Border = 4,
Clamp = 3,
Mirror = 2,
MirrorOnce = 5,
Wrap = 1
};
};
/// <summary>
/// Defines how a texture will be filtered as it is minified for each mipmap level.
/// </summary>
struct TextureFilter
{
enum type
{
Anisotropic = 3,
GaussianQuad = 7,
Linear = 2,
None = 0,
Point = 1,
PyramidalQuad = 6
};
};
/// <summary>
/// Specifies special usage of the texture data.
/// </summary>
struct TextureUsage
{
enum type
{
AutoGenerateMipMap,
Linear,
None,
Tiled
};
};
/// <summary>
/// Defines supported wrap coordinates.
/// </summary>
struct TextureWrapCoordinates
{
enum type
{
None = 0,
One = 2,
Three = 8,
Two = 4,
Zero = 1
};
};
/// <summary>
/// Defines vertex element formats.
/// </summary>
struct VertexElementFormat
{
enum type
{
Byte4,
Color,
HalfVector2,
HalfVector4,
Normalized101010,
NormalizedShort2,
NormalizedShort4,
Rg32,
Rgba32,
Rgba64,
Short2,
Short4,
Single,
UInt101010,
Unused,
Vector2,
Vector3,
Vector4
};
};
/// <summary>
/// Defines the tessellator processing method for a vertex element.
/// </summary>
struct VertexElementMethod
{
enum type
{
Default,
LookUp,
LookUpPresampled,
UV
};
};
/// <summary>
/// Defines usage for vertex elements.
/// </summary>
struct VertexElementUsage
{
enum type
{
Binormal,
BlendIndices,
BlendWeight,
Color,
Depth,
Fog,
Normal,
PointSize,
Position,
Sample,
Tangent,
TessellateFactor,
TextureCoordinate
};
};
// Lots of typedefs, but there was no other way to make these typesafe enum hacks look good.
typedef Blend::type Blend_t;
typedef BlendFunction::type BlendFunction_t;
typedef BufferUsage::type BufferUsage_t;
typedef ClearOptions::type ClearOptions_t;
typedef ColorWriteChannels::type ColorWriteChannels_t;
typedef CompareFunction::type CompareFunction_t;
typedef CompilerIncludeHandlerType::type CompilerIncludeHandlerType_t;
typedef CompilerOptions::type CompilerOptions_t;
typedef CubeMapFace::type CubeMapFace_t;
typedef CullMode::type CullMode_t;
typedef DepthFormat::type DepthFormat_t;
typedef DeviceType::type DeviceType_t;
typedef EffectParameterClass::type EffectParameterClass_t;
typedef FillMode::type FillMode_t;
typedef FilterOptions::type FilterOptions_t;
typedef FogMode::type FogMode_t;
typedef GraphicsDeviceStatus::type GraphicsDeviceStatus_t;
typedef ImageFileFormat::type ImageFileFormat_t;
typedef IndexElementSize::type IndexElementSize_t;
typedef MultiSampleType::type MultiSampleType_t;
typedef PresentInterval::type PresentInterval_t;
typedef PresentOptions::type PresentOptions_t;
typedef PrimitiveType::type PrimitiveType_t;
typedef QueryUsages::type QueryUsages_t;
typedef RenderTargetUsage::type RenderTargetUsage_t;
typedef ResourceType::type ResourceType_t;
typedef SaveStateMode::type SaveStateMode_t;
typedef SetDataOptions::type SetDataOptions_t;
typedef ShaderProfile::type ShaderProfile_t;
typedef ShaderRegisterSet::type ShaderRegisterSet_t;
typedef SpriteBlendMode::type SpriteBlendMode_t;
typedef SpriteEffects::type SpriteEffects_t;
typedef SpriteSortMode::type SpriteSortMode_t;
typedef StencilOperation::type StencilOperation_t;
typedef SurfaceFormat::type SurfaceFormat_t;
typedef SwapEffect::type SwapEffect_t;
typedef TextureAddressMode::type TextureAddressMode_t;
typedef TextureFilter::type TextureFilter_t;
typedef TextureUsage::type TextureUsage_t;
typedef TextureWrapCoordinates::type TextureWrapCoordinates_t;
typedef VertexElementFormat::type VertexElementFormat_t;
typedef VertexElementMethod::type VertexElementMethod_t;
typedef VertexElementUsage::type VertexElementUsage_t;
}
}
#endif //_GRAPHICS_ENUMS_