$#include "Graphics/GraphicsDefs.h" enum PrimitiveType { TRIANGLE_LIST = 0, LINE_LIST, POINT_LIST, TRIANGLE_STRIP, LINE_STRIP, TRIANGLE_FAN }; enum GeometryType { GEOM_STATIC = 0, GEOM_SKINNED = 1, GEOM_INSTANCED = 2, GEOM_BILLBOARD = 3, GEOM_STATIC_NOINSTANCING = 4, MAX_GEOMETRYTYPES = 4, }; enum BlendMode { BLEND_REPLACE = 0, BLEND_ADD, BLEND_MULTIPLY, BLEND_ALPHA, BLEND_ADDALPHA, BLEND_PREMULALPHA, BLEND_INVDESTALPHA, BLEND_SUBTRACT, BLEND_SUBTRACTALPHA, MAX_BLENDMODES }; enum CompareMode { CMP_ALWAYS = 0, CMP_EQUAL, CMP_NOTEQUAL, CMP_LESS, CMP_LESSEQUAL, CMP_GREATER, CMP_GREATEREQUAL, MAX_COMPAREMODES }; enum CullMode { CULL_NONE = 0, CULL_CCW, CULL_CW, MAX_CULLMODES }; enum FillMode { FILL_SOLID = 0, FILL_WIREFRAME, FILL_POINT }; enum StencilOp { OP_KEEP = 0, OP_ZERO, OP_REF, OP_INCR, OP_DECR }; enum LockState { LOCK_NONE = 0, LOCK_HARDWARE, LOCK_SHADOW, LOCK_SCRATCH }; enum LegacyVertexElement { ELEMENT_POSITION = 0, ELEMENT_NORMAL, ELEMENT_COLOR, ELEMENT_TEXCOORD1, ELEMENT_TEXCOORD2, ELEMENT_CUBETEXCOORD1, ELEMENT_CUBETEXCOORD2, ELEMENT_TANGENT, ELEMENT_BLENDWEIGHTS, ELEMENT_BLENDINDICES, ELEMENT_INSTANCEMATRIX1, ELEMENT_INSTANCEMATRIX2, ELEMENT_INSTANCEMATRIX3, ELEMENT_OBJECTINDEX, MAX_LEGACY_VERTEX_ELEMENTS }; enum VertexElementType { TYPE_INT = 0, TYPE_FLOAT, TYPE_VECTOR2, TYPE_VECTOR3, TYPE_VECTOR4, TYPE_UBYTE4, TYPE_UBYTE4_NORM, MAX_VERTEX_ELEMENT_TYPES }; enum VertexElementSemantic { SEM_POSITION = 0, SEM_NORMAL, SEM_BINORMAL, SEM_TANGENT, SEM_TEXCOORD, SEM_COLOR, SEM_BLENDWEIGHTS, SEM_BLENDINDICES, SEM_OBJECTINDEX, MAX_VERTEX_ELEMENT_SEMANTICS }; enum TextureFilterMode { FILTER_NEAREST = 0, FILTER_BILINEAR, FILTER_TRILINEAR, FILTER_ANISOTROPIC, FILTER_NEAREST_ANISOTROPIC, FILTER_DEFAULT, MAX_FILTERMODES }; enum TextureAddressMode { ADDRESS_WRAP = 0, ADDRESS_MIRROR, ADDRESS_CLAMP, ADDRESS_BORDER, MAX_ADDRESSMODES }; enum TextureCoordinate { COORD_U = 0, COORD_V, COORD_W, MAX_COORDS }; enum TextureUsage { TEXTURE_STATIC = 0, TEXTURE_DYNAMIC, TEXTURE_RENDERTARGET, TEXTURE_DEPTHSTENCIL }; enum CubeMapFace { FACE_POSITIVE_X = 0, FACE_NEGATIVE_X, FACE_POSITIVE_Y, FACE_NEGATIVE_Y, FACE_POSITIVE_Z, FACE_NEGATIVE_Z, MAX_CUBEMAP_FACES }; enum RenderSurfaceUpdateMode { SURFACE_MANUALUPDATE = 0, SURFACE_UPDATEVISIBLE, SURFACE_UPDATEALWAYS }; enum ShaderType { VS = 0, PS, }; // Texture unit numbering depends on graphics capability (mobile or desktop). Expose only the units we are sure of enum TextureUnit { TU_DIFFUSE = 0, TU_ALBEDOBUFFER = 0, TU_NORMAL = 1, TU_NORMALBUFFER = 1, TU_SPECULAR = 2, TU_EMISSIVE = 3, TU_ENVIRONMENT = 4, }; enum FaceCameraMode { FC_NONE = 0, FC_ROTATE_XYZ, FC_ROTATE_Y, FC_LOOKAT_XYZ, FC_LOOKAT_Y, FC_LOOKAT_MIXED, FC_DIRECTION }; /// Shadow type enum ShadowQuality { SHADOWQUALITY_SIMPLE_16BIT = 0, SHADOWQUALITY_SIMPLE_24BIT, SHADOWQUALITY_PCF_16BIT, SHADOWQUALITY_PCF_24BIT, SHADOWQUALITY_VSM, SHADOWQUALITY_BLUR_VSM }; struct VertexElement { VertexElement(); VertexElement(VertexElementType type, VertexElementSemantic semantic, unsigned char index = 0, bool perInstance = false); VertexElementType type_ @ type; VertexElementSemantic semantic_ @ semantic; unsigned char index_ @ index; bool perInstance_ @ perInstance; unsigned offset_ @ offset; }; static const int QUALITY_LOW; static const int QUALITY_MEDIUM; static const int QUALITY_HIGH; static const int QUALITY_MAX; static const unsigned CLEAR_COLOR; static const unsigned CLEAR_DEPTH; static const unsigned CLEAR_STENCIL; static const unsigned MASK_NONE; static const unsigned MASK_POSITION; static const unsigned MASK_NORMAL; static const unsigned MASK_COLOR; static const unsigned MASK_TEXCOORD1; static const unsigned MASK_TEXCOORD2; static const unsigned MASK_CUBETEXCOORD1; static const unsigned MASK_CUBETEXCOORD2; static const unsigned MASK_TANGENT; static const unsigned MASK_BLENDWEIGHTS; static const unsigned MASK_BLENDINDICES; static const unsigned MASK_INSTANCEMATRIX1; static const unsigned MASK_INSTANCEMATRIX2; static const unsigned MASK_INSTANCEMATRIX3; static const unsigned MASK_OBJECTINDEX;