/**************************************************************************************/ /* */ /* Visualization Library */ /* http://visualizationlibrary.org */ /* */ /* Copyright (c) 2005-2020, Michele Bosi */ /* All rights reserved. */ /* */ /* Redistribution and use in source and binary forms, with or without modification, */ /* are permitted provided that the following conditions are met: */ /* */ /* - Redistributions of source code must retain the above copyright notice, this */ /* list of conditions and the following disclaimer. */ /* */ /* - Redistributions in binary form must reproduce the above copyright notice, this */ /* list of conditions and the following disclaimer in the documentation and/or */ /* other materials provided with the distribution. */ /* */ /* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND */ /* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED */ /* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE */ /* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR */ /* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES */ /* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; */ /* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON */ /* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT */ /* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS */ /* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* */ /**************************************************************************************/ /** * \file vlnamespace.hpp * Visualization Library's enums in the 'vl' namespace. */ #ifndef vlnamespace_INCLUDE_ONCE #define vlnamespace_INCLUDE_ONCE #include #include namespace vl { typedef enum { TF_UNKNOWN = 0, TF_ALPHA = GL_ALPHA, TF_ALPHA4 = GL_ALPHA4, TF_ALPHA8 = GL_ALPHA8, TF_ALPHA12 = GL_ALPHA12, TF_ALPHA16 = GL_ALPHA16, TF_INTENSITY = GL_INTENSITY, TF_INTENSITY4 = GL_INTENSITY4, TF_INTENSITY8 = GL_INTENSITY8, TF_INTENSITY12 = GL_INTENSITY12, TF_INTENSITY16 = GL_INTENSITY16, TF_LUMINANCE = GL_LUMINANCE, TF_LUMINANCE4 = GL_LUMINANCE4, TF_LUMINANCE8 = GL_LUMINANCE8, TF_LUMINANCE12 = GL_LUMINANCE12, TF_LUMINANCE16 = GL_LUMINANCE16, TF_LUMINANCE_ALPHA = GL_LUMINANCE_ALPHA, TF_LUMINANCE4_ALPHA4 = GL_LUMINANCE4_ALPHA4, TF_LUMINANCE6_ALPHA2 = GL_LUMINANCE6_ALPHA2, TF_LUMINANCE8_ALPHA8 = GL_LUMINANCE8_ALPHA8, TF_LUMINANCE12_ALPHA4 = GL_LUMINANCE12_ALPHA4, TF_LUMINANCE12_ALPHA12 = GL_LUMINANCE12_ALPHA12, TF_LUMINANCE16_ALPHA16 = GL_LUMINANCE16_ALPHA16, TF_R3_G3_B2 = GL_R3_G3_B2, TF_RGB = GL_RGB, TF_RGB4 = GL_RGB4, TF_RGB5 = GL_RGB5, TF_RGB8 = GL_RGB8, TF_RGB10 = GL_RGB10, TF_RGB12 = GL_RGB12, TF_RGB16 = GL_RGB16, TF_RGBA = GL_RGBA, TF_RGBA2 = GL_RGBA2, TF_RGBA4 = GL_RGBA4, TF_RGB5_A1 = GL_RGB5_A1, TF_RGBA8 = GL_RGBA8, TF_RGB10_A2 = GL_RGB10_A2, TF_RGBA12 = GL_RGBA12, TF_RGBA16 = GL_RGBA16, // ARB_texture_float / OpenGL 3 TF_RGBA32F = GL_RGBA32F, TF_RGB32F = GL_RGB32F, TF_ALPHA32F = GL_ALPHA32F_ARB, TF_INTENSITY32F = GL_INTENSITY32F_ARB, TF_LUMINANCE32F = GL_LUMINANCE32F_ARB, TF_LUMINANCE_ALPHA32F = GL_LUMINANCE_ALPHA32F_ARB, TF_RGBA16F = GL_RGBA16F, TF_RGB16F = GL_RGB16F, TF_ALPHA16F = GL_ALPHA16F_ARB, TF_INTENSITY16F = GL_INTENSITY16F_ARB, TF_LUMINANCE16F = GL_LUMINANCE16F_ARB, TF_LUMINANCE_ALPHA16F = GL_LUMINANCE_ALPHA16F_ARB, // ATI_texture_float (the enums are the same as ARB_texture_float) TF_RGBA_FLOAT32_ATI = GL_RGBA_FLOAT32_ATI, TF_RGB_FLOAT32_ATI = GL_RGB_FLOAT32_ATI, TF_ALPHA_FLOAT32_ATI = GL_ALPHA_FLOAT32_ATI, TF_INTENSITY_FLOAT32_ATI = GL_INTENSITY_FLOAT32_ATI, TF_LUMINANCE_FLOAT32_ATI = GL_LUMINANCE_FLOAT32_ATI, TF_LUMINANCE_ALPHA_FLOAT32_ATI = GL_LUMINANCE_ALPHA_FLOAT32_ATI, TF_RGBA_FLOAT16_ATI = GL_RGBA_FLOAT16_ATI, TF_RGB_FLOAT16_ATI = GL_RGB_FLOAT16_ATI, TF_ALPHA_FLOAT16_ATI = GL_ALPHA_FLOAT16_ATI, TF_INTENSITY_FLOAT16_ATI = GL_INTENSITY_FLOAT16_ATI, TF_LUMINANCE_FLOAT16_ATI = GL_LUMINANCE_FLOAT16_ATI, TF_LUMINANCE_ALPHA_FLOAT16_ATI = GL_LUMINANCE_ALPHA_FLOAT16_ATI, // EXT_texture_shared_exponent TF_RGB9_E5_EXT = GL_RGB9_E5_EXT, // EXT_packed_float TF_11F_G11F_B10F_EXT = GL_R11F_G11F_B10F_EXT, // EXT_packed_depth_stencil / GL_ARB_framebuffer_object TF_DEPTH_STENCIL = GL_DEPTH_STENCIL, TF_DEPTH24_STENCIL8 = GL_DEPTH24_STENCIL8, // ARB_depth_buffer_float TF_DEPTH_COMPONENT32F = GL_DEPTH_COMPONENT32F, TF_DEPTH32F_STENCIL8 = GL_DEPTH32F_STENCIL8, // ARB_depth_texture TF_DEPTH_COMPONENT = GL_DEPTH_COMPONENT, TF_DEPTH_COMPONENT16 = GL_DEPTH_COMPONENT16, TF_DEPTH_COMPONENT24 = GL_DEPTH_COMPONENT24, TF_DEPTH_COMPONENT32 = GL_DEPTH_COMPONENT32, // ARB_texture_compression TF_COMPRESSED_ALPHA = GL_COMPRESSED_ALPHA_ARB, TF_COMPRESSED_INTENSITY = GL_COMPRESSED_INTENSITY_ARB, TF_COMPRESSED_LUMINANCE = GL_COMPRESSED_LUMINANCE_ARB, TF_COMPRESSED_LUMINANCE_ALPHA = GL_COMPRESSED_LUMINANCE_ALPHA_ARB, TF_COMPRESSED_RGB = GL_COMPRESSED_RGB_ARB, TF_COMPRESSED_RGBA = GL_COMPRESSED_RGBA_ARB, // 3DFX_texture_compression_FXT1 TF_COMPRESSED_RGB_FXT1_3DFX = GL_COMPRESSED_RGB_FXT1_3DFX, TF_COMPRESSED_RGBA_FXT1_3DFX = GL_COMPRESSED_RGBA_FXT1_3DFX, // EXT_texture_compression_s3tc TF_COMPRESSED_RGB_S3TC_DXT1_EXT = GL_COMPRESSED_RGB_S3TC_DXT1_EXT, TF_COMPRESSED_RGBA_S3TC_DXT1_EXT = GL_COMPRESSED_RGBA_S3TC_DXT1_EXT, TF_COMPRESSED_RGBA_S3TC_DXT3_EXT = GL_COMPRESSED_RGBA_S3TC_DXT3_EXT, TF_COMPRESSED_RGBA_S3TC_DXT5_EXT = GL_COMPRESSED_RGBA_S3TC_DXT5_EXT, // EXT_texture_compression_latc TF_COMPRESSED_LUMINANCE_LATC1_EXT = GL_COMPRESSED_LUMINANCE_LATC1_EXT, TF_COMPRESSED_SIGNED_LUMINANCE_LATC1_EXT = GL_COMPRESSED_SIGNED_LUMINANCE_LATC1_EXT, TF_COMPRESSED_LUMINANCE_ALPHA_LATC2_EXT = GL_COMPRESSED_LUMINANCE_ALPHA_LATC2_EXT, TF_COMPRESSED_SIGNED_LUMINANCE_ALPHA_LATC2_EXT = GL_COMPRESSED_SIGNED_LUMINANCE_ALPHA_LATC2_EXT, // EXT_texture_compression_rgtc TF_COMPRESSED_RED_RGTC1_EXT = GL_COMPRESSED_RED_RGTC1_EXT, TF_COMPRESSED_SIGNED_RED_RGTC1_EXT = GL_COMPRESSED_SIGNED_RED_RGTC1_EXT, TF_COMPRESSED_RED_GREEN_RGTC2_EXT = GL_COMPRESSED_RED_GREEN_RGTC2_EXT, TF_COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT = GL_COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT, // EXT_texture_integer TF_RGBA32UI_EXT = GL_RGBA32UI_EXT, TF_RGB32UI_EXT = GL_RGB32UI_EXT, TF_ALPHA32UI_EXT = GL_ALPHA32UI_EXT, TF_INTENSITY32UI_EXT = GL_INTENSITY32UI_EXT, TF_LUMINANCE32UI_EXT = GL_LUMINANCE32UI_EXT, TF_LUMINANCE_ALPHA32UI_EXT = GL_LUMINANCE_ALPHA32UI_EXT, TF_RGBA16UI_EXT = GL_RGBA16UI_EXT, TF_RGB16UI_EXT = GL_RGB16UI_EXT, TF_ALPHA16UI_EXT = GL_ALPHA16UI_EXT, TF_INTENSITY16UI_EXT = GL_INTENSITY16UI_EXT, TF_LUMINANCE16UI_EXT = GL_LUMINANCE16UI_EXT, TF_LUMINANCE_ALPHA16UI_EXT = GL_LUMINANCE_ALPHA16UI_EXT, TF_RGBA8UI_EXT = GL_RGBA8UI_EXT, TF_RGB8UI_EXT = GL_RGB8UI_EXT, TF_ALPHA8UI_EXT = GL_ALPHA8UI_EXT, TF_INTENSITY8UI_EXT = GL_INTENSITY8UI_EXT, TF_LUMINANCE8UI_EXT = GL_LUMINANCE8UI_EXT, TF_LUMINANCE_ALPHA8UI_EXT = GL_LUMINANCE_ALPHA8UI_EXT, TF_RGBA32I_EXT = GL_RGBA32I_EXT, TF_RGB32I_EXT = GL_RGB32I_EXT, TF_ALPHA32I_EXT = GL_ALPHA32I_EXT, TF_INTENSITY32I_EXT = GL_INTENSITY32I_EXT, TF_LUMINANCE32I_EXT = GL_LUMINANCE32I_EXT, TF_LUMINANCE_ALPHA32I_EXT = GL_LUMINANCE_ALPHA32I_EXT, TF_RGBA16I_EXT = GL_RGBA16I_EXT, TF_RGB16I_EXT = GL_RGB16I_EXT, TF_ALPHA16I_EXT = GL_ALPHA16I_EXT, TF_INTENSITY16I_EXT = GL_INTENSITY16I_EXT, TF_LUMINANCE16I_EXT = GL_LUMINANCE16I_EXT, TF_LUMINANCE_ALPHA16I_EXT = GL_LUMINANCE_ALPHA16I_EXT, TF_RGBA8I_EXT = GL_RGBA8I_EXT, TF_RGB8I_EXT = GL_RGB8I_EXT, TF_ALPHA8I_EXT = GL_ALPHA8I_EXT, TF_INTENSITY8I_EXT = GL_INTENSITY8I_EXT, TF_LUMINANCE8I_EXT = GL_LUMINANCE8I_EXT, TF_LUMINANCE_ALPHA8I_EXT = GL_LUMINANCE_ALPHA8I_EXT, // GL_ARB_texture_rg TF_RED = GL_RED, TF_COMPRESSED_RED = GL_COMPRESSED_RED, TF_COMPRESSED_RG = GL_COMPRESSED_RG, TF_RG = GL_RG, TF_R8 = GL_R8, TF_R16 = GL_R16, TF_RG8 = GL_RG8, TF_RG16 = GL_RG16, TF_R16F = GL_R16F, TF_R32F = GL_R32F, TF_RG16F = GL_RG16F, TF_RG32F = GL_RG32F, TF_R8I = GL_R8I, TF_R8UI = GL_R8UI, TF_R16I = GL_R16I, TF_R16UI = GL_R16UI, TF_R32I = GL_R32I, TF_R32UI = GL_R32UI, TF_RG8I = GL_RG8I, TF_RG8UI = GL_RG8UI, TF_RG16I = GL_RG16I, TF_RG16UI = GL_RG16UI, TF_RG32I = GL_RG32I, TF_RG32UI = GL_RG32UI, // sRGB OpenGL 2.1 TF_SLUMINANCE_ALPHA = GL_SLUMINANCE_ALPHA, TF_SLUMINANCE8_ALPHA8 = GL_SLUMINANCE8_ALPHA8, TF_SLUMINANCE = GL_SLUMINANCE, TF_SLUMINANCE8 = GL_SLUMINANCE8, TF_COMPRESSED_SLUMINANCE = GL_COMPRESSED_SLUMINANCE, TF_COMPRESSED_SLUMINANCE_ALPHA = GL_COMPRESSED_SLUMINANCE_ALPHA, // sRGB OpenGL 2.1 / 3.x TF_SRGB = GL_SRGB, TF_SRGB8 = GL_SRGB8, TF_SRGB_ALPHA = GL_SRGB_ALPHA, TF_SRGB8_ALPHA8 = GL_SRGB8_ALPHA8, TF_COMPRESSED_SRGB = GL_COMPRESSED_SRGB, TF_COMPRESSED_SRGB_ALPHA = GL_COMPRESSED_SRGB_ALPHA, // GL_EXT_texture_sRGB compressed formats TF_COMPRESSED_SRGB_S3TC_DXT1_EXT = GL_COMPRESSED_SRGB_S3TC_DXT1_EXT, TF_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT = GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT, TF_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT = GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT, TF_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT = GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT, // from table 3.12 opengl api specs 4.1 TF_R8_SNORM = GL_R8_SNORM, TF_R16_SNORM = GL_R16_SNORM, TF_RG8_SNORM = GL_RG8_SNORM, TF_RG16_SNORM = GL_RG16_SNORM, TF_RGB8_SNORM = GL_RGB8_SNORM, TF_RGBA8_SNORM = GL_RGBA8_SNORM, TF_RGB10_A2UI = GL_RGB10_A2UI, TF_RGBA16_SNORM = GL_RGBA16_SNORM, TF_R11F_G11F_B10F = GL_R11F_G11F_B10F, TF_RGB9_E5 = GL_RGB9_E5, TF_RGB8I = GL_RGB8I, TF_RGB8UI = GL_RGB8UI, TF_RGB16I = GL_RGB16I, TF_RGB16UI = GL_RGB16UI, TF_RGB32I = GL_RGB32I, TF_RGB32UI = GL_RGB32UI, TF_RGBA8I = GL_RGBA8I, TF_RGBA8UI = GL_RGBA8UI, TF_RGBA16I = GL_RGBA16I, TF_RGBA16UI = GL_RGBA16UI, TF_RGBA32I = GL_RGBA32I, TF_RGBA32UI = GL_RGBA32UI } ETextureFormat; typedef enum { IF_RGB = GL_RGB, IF_RGBA = GL_RGBA, IF_BGR = GL_BGR, IF_BGRA = GL_BGRA, IF_RG = GL_RG, IF_RG_INTEGER = GL_RG_INTEGER, IF_RED = GL_RED, IF_GREEN = GL_GREEN, IF_BLUE = GL_BLUE, IF_ALPHA = GL_ALPHA, IF_LUMINANCE = GL_LUMINANCE, IF_LUMINANCE_ALPHA = GL_LUMINANCE_ALPHA, IF_DEPTH_COMPONENT = GL_DEPTH_COMPONENT, IF_STENCIL_INDEX = GL_STENCIL_INDEX, // EXT_packed_depth_stencil / GL_ARB_framebuffer_object IF_DEPTH_STENCIL = GL_DEPTH_STENCIL, // compressed formats // note: with these format the type must be IT_IMPLICIT_TYPE IF_COMPRESSED_RGB_S3TC_DXT1 = GL_COMPRESSED_RGB_S3TC_DXT1_EXT, IF_COMPRESSED_RGBA_S3TC_DXT1 = GL_COMPRESSED_RGBA_S3TC_DXT1_EXT, IF_COMPRESSED_RGBA_S3TC_DXT3 = GL_COMPRESSED_RGBA_S3TC_DXT3_EXT, IF_COMPRESSED_RGBA_S3TC_DXT5 = GL_COMPRESSED_RGBA_S3TC_DXT5_EXT, // GL 3.0 (EXT_texture_integer) IF_RED_INTEGER = GL_RED_INTEGER, IF_GREEN_INTEGER = GL_GREEN_INTEGER, IF_BLUE_INTEGER = GL_BLUE_INTEGER, IF_ALPHA_INTEGER = GL_ALPHA_INTEGER, IF_RGB_INTEGER = GL_RGB_INTEGER, IF_RGBA_INTEGER = GL_RGBA_INTEGER, IF_BGR_INTEGER = GL_BGR_INTEGER, IF_BGRA_INTEGER = GL_BGRA_INTEGER, // EXT_texture_integer IF_LUMINANCE_INTEGER = GL_LUMINANCE_INTEGER_EXT, IF_LUMINANCE_ALPHA_INTEGER = GL_LUMINANCE_ALPHA_INTEGER_EXT, } EImageFormat; typedef enum { T2DT_TEXTURE_2D = GL_TEXTURE_2D, T2DT_TEXTURE_CUBE_MAP_POSITIVE_X = GL_TEXTURE_CUBE_MAP_POSITIVE_X, T2DT_TEXTURE_CUBE_MAP_NEGATIVE_X = GL_TEXTURE_CUBE_MAP_NEGATIVE_X, T2DT_TEXTURE_CUBE_MAP_POSITIVE_Y = GL_TEXTURE_CUBE_MAP_POSITIVE_Y, T2DT_TEXTURE_CUBE_MAP_NEGATIVE_Y = GL_TEXTURE_CUBE_MAP_NEGATIVE_Y, T2DT_TEXTURE_CUBE_MAP_POSITIVE_Z = GL_TEXTURE_CUBE_MAP_POSITIVE_Z, T2DT_TEXTURE_CUBE_MAP_NEGATIVE_Z = GL_TEXTURE_CUBE_MAP_NEGATIVE_Z, T2DT_TEXTURE_RECTANGLE = GL_TEXTURE_RECTANGLE_ARB, T2DT_TEXTURE_1D_ARRAY = GL_TEXTURE_1D_ARRAY, T2DT_TEXTURE_2D_MULTISAMPLE = GL_TEXTURE_2D_MULTISAMPLE, } ETex2DTarget; typedef enum { AP_NO_ATTACHMENT = 0, AP_COLOR_ATTACHMENT0 = GL_COLOR_ATTACHMENT0, AP_COLOR_ATTACHMENT1 = GL_COLOR_ATTACHMENT1, AP_COLOR_ATTACHMENT2 = GL_COLOR_ATTACHMENT2, AP_COLOR_ATTACHMENT3 = GL_COLOR_ATTACHMENT3, AP_COLOR_ATTACHMENT4 = GL_COLOR_ATTACHMENT4, AP_COLOR_ATTACHMENT5 = GL_COLOR_ATTACHMENT5, AP_COLOR_ATTACHMENT6 = GL_COLOR_ATTACHMENT6, AP_COLOR_ATTACHMENT7 = GL_COLOR_ATTACHMENT7, AP_COLOR_ATTACHMENT8 = GL_COLOR_ATTACHMENT8, AP_COLOR_ATTACHMENT9 = GL_COLOR_ATTACHMENT9, AP_COLOR_ATTACHMENT10 = GL_COLOR_ATTACHMENT10, AP_COLOR_ATTACHMENT11 = GL_COLOR_ATTACHMENT11, AP_COLOR_ATTACHMENT12 = GL_COLOR_ATTACHMENT12, AP_COLOR_ATTACHMENT13 = GL_COLOR_ATTACHMENT13, AP_COLOR_ATTACHMENT14 = GL_COLOR_ATTACHMENT14, AP_COLOR_ATTACHMENT15 = GL_COLOR_ATTACHMENT15, AP_DEPTH_ATTACHMENT = GL_DEPTH_ATTACHMENT, AP_STENCIL_ATTACHMENT = GL_STENCIL_ATTACHMENT, AP_DEPTH_STENCIL_ATTACHMENT = GL_DEPTH_STENCIL_ATTACHMENT, } EAttachmentPoint; //! Color-renderable formats as defined in section 4.4.4 of opengl api specs 4.1 typedef enum { CBF_RED = GL_RED, CBF_RG = GL_RG, CBF_RGB = GL_RGB, CBF_RGBA = GL_RGBA, // see table 3.12 opengl api specs 4.1 CBF_R8 = GL_R8, // CBF_R8_SNORM = GL_R8_SNORM, CBF_R16 = GL_R16, // CBF_R16_SNORM = GL_R16_SNORM, CBF_RG8 = GL_RG8, // CBF_RG8_SNORM = GL_RG8_SNORM, CBF_RG16 = GL_RG16, // CBF_RG16_SNORM = GL_RG16_SNORM, // CBF_R3_G3_B2 = GL_R3_G3_B2, // CBF_RGB4 = GL_RGB4, // CBF_RGB5 = GL_RGB5, // CBF_RGB8 = GL_RGB8, // CBF_RGB8_SNORM = GL_RGB8_SNORM, // CBF_RGB10 = GL_RGB10, // CBF_RGB12 = GL_RGB12, // CBF_RGB16 = GL_RGB16, // CBF_RGB16_SNORM = GL_RGB16_SNORM, // CBF_RGBA2 = GL_RGBA2, // CBF_RGBA4 = GL_RGBA4, // CBF_RGB5_A1 = GL_RGB5_A1, CBF_RGBA8 = GL_RGBA8, // CBF_RGBA8_SNORM = GL_RGBA8_SNORM, CBF_RGB10_A2 = GL_RGB10_A2, CBF_RGB10_A2UI = GL_RGB10_A2UI, // CBF_RGBA12 = GL_RGBA12, CBF_RGBA16 = GL_RGBA16, // CBF_RGBA16_SNORM = GL_RGBA16_SNORM, // CBF_SRGB8 = GL_SRGB8, CBF_SRGB8_ALPHA8 = GL_SRGB8_ALPHA8, CBF_R16F = GL_R16F, CBF_RG16F = GL_RG16F, // CBF_RGB16F = GL_RGB16F, CBF_RGBA16F = GL_RGBA16F, CBF_R32F = GL_R32F, CBF_RG32F = GL_RG32F, // CBF_RGB32F = GL_RGB32F, CBF_RGBA32F = GL_RGBA32F, CBF_R11F_G11F_B10F = GL_R11F_G11F_B10F, // CBF_RGB9_E5 = GL_RGB9_E5, CBF_R8I = GL_R8I, CBF_R8UI = GL_R8UI, CBF_R16I = GL_R16I, CBF_R16UI = GL_R16UI, CBF_R32I = GL_R32I, CBF_R32UI = GL_R32UI, CBF_RG8I = GL_RG8I, CBF_RG8UI = GL_RG8UI, CBF_RG16I = GL_RG16I, CBF_RG16UI = GL_RG16UI, CBF_RG32I = GL_RG32I, CBF_RG32UI = GL_RG32UI, // CBF_RGB8I = GL_RGB8I, // CBF_RGB8UI = GL_RGB8UI, // CBF_RGB16I = GL_RGB16I, // CBF_RGB16UI = GL_RGB16UI, // CBF_RGB32I = GL_RGB32I, // CBF_RGB32UI = GL_RGB32UI, CBF_RGBA8I = GL_RGBA8I, CBF_RGBA8UI = GL_RGBA8UI, CBF_RGBA16I = GL_RGBA16I, CBF_RGBA16UI = GL_RGBA16UI, CBF_RGBA32I = GL_RGBA32I, CBF_RGBA32UI = GL_RGBA32UI } EColorBufferFormat; typedef enum { DBF_DEPTH_COMPONENT = GL_DEPTH_COMPONENT, DBF_DEPTH_COMPONENT16 = GL_DEPTH_COMPONENT16, DBF_DEPTH_COMPONENT24 = GL_DEPTH_COMPONENT24, DBF_DEPTH_COMPONENT32 = GL_DEPTH_COMPONENT32, DBF_DEPTH_COMPONENT32F = GL_DEPTH_COMPONENT32F, } EDepthBufferFormat; typedef enum { SBF_STENCIL_INDEX1 = GL_STENCIL_INDEX1_EXT, SBF_STENCIL_INDEX4 = GL_STENCIL_INDEX4_EXT, SBF_STENCIL_INDEX8 = GL_STENCIL_INDEX8_EXT, SBF_STENCIL_INDEX16 = GL_STENCIL_INDEX16_EXT } EStencilBufferFormat; typedef enum { DSBT_DEPTH_STENCIL = GL_DEPTH_STENCIL, DSBT_DEPTH24_STENCIL8 = GL_DEPTH24_STENCIL8, DSBT_DEPTH32F_STENCIL8 = GL_DEPTH32F_STENCIL8, } EDepthStencilBufferFormat; typedef enum { CF_DO_NOT_CLEAR = 0, CF_CLEAR_COLOR = GL_COLOR_BUFFER_BIT, CF_CLEAR_DEPTH = GL_DEPTH_BUFFER_BIT, CF_CLEAR_STENCIL = GL_STENCIL_BUFFER_BIT, CF_CLEAR_COLOR_DEPTH = CF_CLEAR_COLOR + CF_CLEAR_DEPTH, CF_CLEAR_COLOR_STENCIL = CF_CLEAR_COLOR + CF_CLEAR_STENCIL, CF_CLEAR_DEPTH_STENCIL = CF_CLEAR_DEPTH + CF_CLEAR_STENCIL, CF_CLEAR_COLOR_DEPTH_STENCIL = CF_CLEAR_COLOR + CF_CLEAR_DEPTH + CF_CLEAR_STENCIL, } EClearFlags; typedef enum { CCM_Float, CCM_Int, CCM_UInt } EClearColorMode; typedef enum { BF_ZERO=GL_ZERO, BF_ONE=GL_ONE, BF_SRC_COLOR=GL_SRC_COLOR, BF_ONE_MINUS_SRC_COLOR=GL_ONE_MINUS_SRC_COLOR, BF_DST_COLOR=GL_DST_COLOR, BF_ONE_MINUS_DST_COLOR=GL_ONE_MINUS_DST_COLOR, BF_SRC_ALPHA=GL_SRC_ALPHA, BF_ONE_MINUS_SRC_ALPHA=GL_ONE_MINUS_SRC_ALPHA, BF_DST_ALPHA=GL_DST_ALPHA, BF_ONE_MINUS_DST_ALPHA=GL_ONE_MINUS_DST_ALPHA, BF_CONSTANT_COLOR=GL_CONSTANT_COLOR, BF_ONE_MINUS_CONSTANT_COLOR=GL_ONE_MINUS_CONSTANT_COLOR, BF_CONSTANT_ALPHA=GL_CONSTANT_ALPHA, BF_ONE_MINUS_CONSTANT_ALPHA=GL_ONE_MINUS_CONSTANT_ALPHA, BF_SRC_ALPHA_SATURATE=GL_SRC_ALPHA_SATURATE } EBlendFactor; typedef enum { TD_TEXTURE_UNKNOWN = 0, TD_TEXTURE_1D = GL_TEXTURE_1D, TD_TEXTURE_2D = GL_TEXTURE_2D, TD_TEXTURE_3D = GL_TEXTURE_3D, TD_TEXTURE_CUBE_MAP = GL_TEXTURE_CUBE_MAP, TD_TEXTURE_RECTANGLE = GL_TEXTURE_RECTANGLE, TD_TEXTURE_1D_ARRAY = GL_TEXTURE_1D_ARRAY, TD_TEXTURE_2D_ARRAY = GL_TEXTURE_2D_ARRAY, TD_TEXTURE_BUFFER = GL_TEXTURE_BUFFER, TD_TEXTURE_2D_MULTISAMPLE = GL_TEXTURE_2D_MULTISAMPLE, TD_TEXTURE_2D_MULTISAMPLE_ARRAY = GL_TEXTURE_2D_MULTISAMPLE_ARRAY } ETextureDimension; typedef enum { TCM_NONE = GL_NONE, TCM_COMPARE_R_TO_TEXTURE = GL_COMPARE_R_TO_TEXTURE, TCM_COMPARE_REF_DEPTH_TO_TEXTURE = GL_COMPARE_REF_DEPTH_TO_TEXTURE_EXT } ETexCompareMode; typedef enum { TCF_LEQUAL = GL_LEQUAL, TCF_GEQUAL = GL_GEQUAL, TCF_LESS = GL_LESS, TCF_GREATER = GL_GREATER, TCF_EQUAL = GL_EQUAL, TCF_NOTEQUAL = GL_NOTEQUAL, TCF_ALWAYS = GL_ALWAYS, TCF_NEVER = GL_NEVER } ETexCompareFunc; typedef enum { DTM_LUMINANCE = GL_LUMINANCE, DTM_INTENSITY = GL_INTENSITY, DTM_ALPHA = GL_ALPHA, DTM_RED = GL_RED } EDepthTextureMode; typedef enum { RDB_NONE = GL_NONE, RDB_FRONT_LEFT = GL_FRONT_LEFT, RDB_FRONT_RIGHT = GL_FRONT_RIGHT, RDB_BACK_LEFT = GL_BACK_LEFT, RDB_BACK_RIGHT = GL_BACK_RIGHT, RDB_AUX0 = GL_AUX0, RDB_AUX1 = GL_AUX1, RDB_AUX2 = GL_AUX2, RDB_AUX3 = GL_AUX3, RDB_COLOR_ATTACHMENT0 = GL_COLOR_ATTACHMENT0_EXT, RDB_COLOR_ATTACHMENT1 = GL_COLOR_ATTACHMENT1_EXT, RDB_COLOR_ATTACHMENT2 = GL_COLOR_ATTACHMENT2_EXT, RDB_COLOR_ATTACHMENT3 = GL_COLOR_ATTACHMENT3_EXT, RDB_COLOR_ATTACHMENT4 = GL_COLOR_ATTACHMENT4_EXT, RDB_COLOR_ATTACHMENT5 = GL_COLOR_ATTACHMENT5_EXT, RDB_COLOR_ATTACHMENT6 = GL_COLOR_ATTACHMENT6_EXT, RDB_COLOR_ATTACHMENT7 = GL_COLOR_ATTACHMENT7_EXT, RDB_COLOR_ATTACHMENT8 = GL_COLOR_ATTACHMENT8_EXT, RDB_COLOR_ATTACHMENT9 = GL_COLOR_ATTACHMENT9_EXT, RDB_COLOR_ATTACHMENT10 = GL_COLOR_ATTACHMENT10_EXT, RDB_COLOR_ATTACHMENT11 = GL_COLOR_ATTACHMENT11_EXT, RDB_COLOR_ATTACHMENT12 = GL_COLOR_ATTACHMENT12_EXT, RDB_COLOR_ATTACHMENT13 = GL_COLOR_ATTACHMENT13_EXT, RDB_COLOR_ATTACHMENT14 = GL_COLOR_ATTACHMENT14_EXT, RDB_COLOR_ATTACHMENT15 = GL_COLOR_ATTACHMENT15_EXT } EReadDrawBuffer; typedef enum { FBB_FRAMEBUFFER = GL_FRAMEBUFFER, FBB_DRAW_FRAMEBUFFER = GL_DRAW_FRAMEBUFFER, FBB_READ_FRAMEBUFFER = GL_READ_FRAMEBUFFER, } EFramebufferBind; typedef enum { IT_IMPLICIT_TYPE = 0, //!< The type is implicitly defined by the EImageFormat value, for ex. IF_COMPRESSED_RGB_S3TC_DXT1. IT_UNSIGNED_BYTE = GL_UNSIGNED_BYTE, IT_BYTE = GL_BYTE, IT_UNSIGNED_SHORT = GL_UNSIGNED_SHORT, IT_SHORT = GL_SHORT, IT_UNSIGNED_INT = GL_UNSIGNED_INT, IT_INT = GL_INT, IT_FLOAT = GL_FLOAT, IT_UNSIGNED_BYTE_3_3_2 = GL_UNSIGNED_BYTE_3_3_2, IT_UNSIGNED_BYTE_2_3_3_REV = GL_UNSIGNED_BYTE_2_3_3_REV, IT_UNSIGNED_SHORT_5_6_5 = GL_UNSIGNED_SHORT_5_6_5, IT_UNSIGNED_SHORT_5_6_5_REV = GL_UNSIGNED_SHORT_5_6_5_REV, IT_UNSIGNED_SHORT_4_4_4_4 = GL_UNSIGNED_SHORT_4_4_4_4, IT_UNSIGNED_SHORT_4_4_4_4_REV = GL_UNSIGNED_SHORT_4_4_4_4_REV, IT_UNSIGNED_SHORT_5_5_5_1 = GL_UNSIGNED_SHORT_5_5_5_1, IT_UNSIGNED_SHORT_1_5_5_5_REV = GL_UNSIGNED_SHORT_1_5_5_5_REV, IT_UNSIGNED_INT_8_8_8_8 = GL_UNSIGNED_INT_8_8_8_8, IT_UNSIGNED_INT_8_8_8_8_REV = GL_UNSIGNED_INT_8_8_8_8_REV, IT_UNSIGNED_INT_10_10_10_2 = GL_UNSIGNED_INT_10_10_10_2, IT_UNSIGNED_INT_2_10_10_10_REV = GL_UNSIGNED_INT_2_10_10_10_REV, IT_UNSIGNED_INT_5_9_9_9_REV = GL_UNSIGNED_INT_5_9_9_9_REV_EXT, /* EXT_texture_shared_exponent, supports only GL_RGB */ IT_UNSIGNED_INT_10F_11F_11F_REV = GL_UNSIGNED_INT_10F_11F_11F_REV_EXT, /* EXT_packed_float, supports only GL_RGB */ IT_UNSIGNED_INT_24_8 = GL_UNSIGNED_INT_24_8, /* EXT_packed_depth_stencil/GL_ARB_framebuffer_object */ IT_FLOAT_32_UNSIGNED_INT_24_8_REV = GL_FLOAT_32_UNSIGNED_INT_24_8_REV /* ARB_depth_buffer_float */ } EImageType; typedef enum { PT_POINTS = GL_POINTS, PT_LINES = GL_LINES, PT_LINE_LOOP = GL_LINE_LOOP, PT_LINE_STRIP = GL_LINE_STRIP, PT_TRIANGLES = GL_TRIANGLES, PT_TRIANGLE_STRIP = GL_TRIANGLE_STRIP, PT_TRIANGLE_FAN = GL_TRIANGLE_FAN, PT_QUADS = GL_QUADS, PT_QUAD_STRIP = GL_QUAD_STRIP, PT_POLYGON = GL_POLYGON, // geometry shader PT_LINES_ADJACENCY = GL_LINES_ADJACENCY_EXT, PT_LINE_STRIP_ADJACENCY = GL_LINE_STRIP_ADJACENCY_EXT, PT_TRIANGLES_ADJACENCY = GL_TRIANGLES_ADJACENCY_EXT, PT_TRIANGLE_STRIP_ADJACENCY = GL_TRIANGLE_STRIP_ADJACENCY_EXT, // GL_ARB_tessellation_shader PT_PATCHES = GL_PATCHES, PT_UNKNOWN, } EPrimitiveType; typedef enum { PF_FRONT=GL_FRONT, PF_BACK=GL_BACK, PF_FRONT_AND_BACK=GL_FRONT_AND_BACK } EPolygonFace; typedef enum { HM_FASTEST=GL_FASTEST, HM_NICEST=GL_NICEST, HM_DONT_CARE=GL_DONT_CARE } EHintMode; typedef enum { FF_CW=GL_CW, FF_CCW=GL_CCW } EFrontFace; typedef enum { FU_NEVER=GL_NEVER, FU_LESS=GL_LESS, FU_EQUAL=GL_EQUAL, FU_LEQUAL=GL_LEQUAL, FU_GREATER=GL_GREATER, FU_NOTEQUAL=GL_NOTEQUAL, FU_GEQUAL=GL_GEQUAL, FU_ALWAYS=GL_ALWAYS } EFunction; typedef enum { PM_FILL=GL_FILL, PM_LINE=GL_LINE, PM_POINT=GL_POINT } EPolygonMode; typedef enum { SM_FLAT=GL_FLAT, SM_SMOOTH=GL_SMOOTH } EShadeModel; typedef enum { BE_FUNC_ADD=GL_FUNC_ADD, BE_FUNC_SUBTRACT=GL_FUNC_SUBTRACT, BE_FUNC_REVERSE_SUBTRACT=GL_FUNC_REVERSE_SUBTRACT, BE_MIN=GL_MIN, BE_MAX=GL_MAX } EBlendEquation; typedef enum { CM_EMISSION=GL_EMISSION, CM_AMBIENT=GL_AMBIENT, CM_DIFFUSE=GL_DIFFUSE, CM_SPECULAR=GL_SPECULAR, CM_AMBIENT_AND_DIFFUSE=GL_AMBIENT_AND_DIFFUSE } EColorMaterial; typedef enum { CC_SEPARATE_SPECULAR_COLOR=GL_SEPARATE_SPECULAR_COLOR, CC_SINGLE_COLOR=GL_SINGLE_COLOR } EColorControl; typedef enum { FM_LINEAR=GL_LINEAR, FM_EXP=GL_EXP, FM_EXP2=GL_EXP2 } EFogMode; typedef enum { LO_CLEAR=GL_CLEAR, LO_SET=GL_SET, LO_COPY=GL_COPY, LO_COPY_INVERTED=GL_COPY_INVERTED, LO_NOOP=GL_NOOP, LO_INVERT=GL_INVERT, LO_AND=GL_AND, LO_NAND=GL_NAND, LO_OR=GL_OR, LO_NOR=GL_NOR, LO_XOR=GL_XOR, LO_EQUIV=GL_EQUIV, LO_AND_REVERSE=GL_AND_REVERSE, LO_AND_INVERTED=GL_AND_INVERTED, LO_OR_REVERSE=GL_OR_REVERSE, LO_OR_INVERTED=GL_OR_INVERTED } ELogicOp; typedef enum { SO_KEEP=GL_KEEP, SO_ZERO=GL_ZERO, SO_REPLACE=GL_REPLACE, SO_INCR=GL_INCR, SO_INCR_WRAP=GL_INCR_WRAP, SO_DECR=GL_DECR, SO_DECR_WRAP=GL_DECR_WRAP, SO_INVERT=GL_INVERT } EStencilOp; typedef enum { TPF_NEAREST=GL_NEAREST, TPF_LINEAR=GL_LINEAR, TPF_NEAREST_MIPMAP_NEAREST=GL_NEAREST_MIPMAP_NEAREST, TPF_LINEAR_MIPMAP_NEAREST=GL_LINEAR_MIPMAP_NEAREST, TPF_NEAREST_MIPMAP_LINEAR=GL_NEAREST_MIPMAP_LINEAR, TPF_LINEAR_MIPMAP_LINEAR=GL_LINEAR_MIPMAP_LINEAR } ETexParamFilter; typedef enum { TPW_CLAMP = GL_CLAMP, TPW_CLAMP_TO_BORDER = GL_CLAMP_TO_BORDER, TPW_CLAMP_TO_EDGE = GL_CLAMP_TO_EDGE, TPW_MIRRORED_REPEAT = GL_MIRRORED_REPEAT, TPW_REPEAT = GL_REPEAT } ETexParamWrap; typedef enum { TEM_DECAL=GL_DECAL, TEM_MODULATE=GL_MODULATE, TEM_ADD=GL_ADD, TEM_BLEND=GL_BLEND, TEM_REPLACE=GL_REPLACE, TEM_COMBINE=GL_COMBINE, TEM_ADD_SIGN=GL_ADD_SIGNED, TEM_INTERPOLATE=GL_INTERPOLATE, TEM_SUBTRACT=GL_SUBTRACT, TEM_DOT3_RGB=GL_DOT3_RGB, TEM_DOT3_RGBA=GL_DOT3_RGBA } ETexEnvMode; typedef enum { TES_TEXTURE=GL_TEXTURE, TES_TEXTURE0=GL_TEXTURE0, TES_TEXTURE1=GL_TEXTURE1, TES_TEXTURE2=GL_TEXTURE2, TES_TEXTURE3=GL_TEXTURE3, TES_TEXTURE4=GL_TEXTURE4, TES_TEXTURE5=GL_TEXTURE5, TES_TEXTURE6=GL_TEXTURE6, TES_TEXTURE7=GL_TEXTURE7, TES_CONSTANT=GL_CONSTANT, TES_PRIMARY_COLOR=GL_PRIMARY_COLOR, TES_PREVIOUS=GL_PREVIOUS } ETexEnvSource; typedef enum { TEO_SRC_COLOR=GL_SRC_COLOR, TEO_ONE_MINUS_SRC_COLOR=GL_ONE_MINUS_SRC_COLOR, TEO_SRC_ALPHA=GL_SRC_ALPHA, TEO_ONE_MINUS_SRC_ALPHA=GL_ONE_MINUS_SRC_ALPHA } ETexEnvOperand; //! Texture generation modes, see also http://www.opengl.org/sdk/docs/man/xhtml/glTexGen.xml for more information. typedef enum { TGM_DISABLED = 0, TGM_EYE_LINEAR = GL_EYE_LINEAR, //!< Not supported under OpenGL ES 1.x TGM_OBJECT_LINEAR = GL_OBJECT_LINEAR, //!< Not supported under OpenGL ES 1.x TGM_SPHERE_MAP = GL_SPHERE_MAP, //!< Not supported under OpenGL ES 1.x TGM_REFLECTION_MAP = GL_REFLECTION_MAP, TGM_NORMAL_MAP = GL_NORMAL_MAP } ETexGenMode; //! Constant that enable/disable a specific OpenGL feature, see also Shader, Shader::enable(), Shader::disable(), Shader::isEnabled() typedef enum { // Common ones EN_BLEND, //!< If enabled, blend the incoming RGBA color values with the values in the color buffers, see also BlendFunc for more information. EN_CULL_FACE, //!< If enabled, cull polygons based on their winding in window coordinates, see also CullFace. EN_DEPTH_TEST, //!< If enabled, do depth comparisons and update the depth buffer; Note that even if the depth buffer exists and the depth mask is non-zero, the depth buffer is not updated if the depth test is disabled, see also DepthFunc and DepthRange. EN_STENCIL_TEST, //!< If enabled, do stencil testing and update the stencil buffer, see also StencilFunc and StencilOp. EN_DITHER, //!< If enabled, dither color components or indices before they are written to the color buffer. EN_POLYGON_OFFSET_FILL, //!< If enabled, and if the polygon is rendered in GL_FILL mode, an offset is added to depth values of a polygon's fragments before the depth comparison is performed, see also PolygonOffset. EN_POLYGON_OFFSET_LINE, //!< If enabled, and if the polygon is rendered in GL_LINE mode, an offset is added to depth values of a polygon's fragments before the depth comparison is performed, see also PolygonOffset. EN_POLYGON_OFFSET_POINT, //!< If enabled, an offset is added to depth values of a polygon's fragments before the depth comparison is performed, if the polygon is rendered in GL_POINT mode, see also PolygonOffset. EN_COLOR_LOGIC_OP, //!< If enabled, apply the currently selected logical operation to the incoming RGBA color and color buffer values, see also LogicOp. EN_MULTISAMPLE, //!< If enabled, use multiple fragment samples in computing the final color of a pixel. See glSampleCoverage. // Smoothing EN_POINT_SMOOTH, //!< If enabled, draw points with proper filtering; Otherwise, draw aliased points, see also PointSize. EN_LINE_SMOOTH, //!< If enabled, draw lines with correct filtering; Otherwise, draw aliased lines, see also LineWidth. EN_POLYGON_SMOOTH, //!< If enabled, draw polygons with proper filtering; Otherwise, draw aliased polygons; For correct antialiased polygons, an alpha buffer is needed and the polygons must be sorted front to back. // Stippling EN_LINE_STIPPLE, //!< If enabled, use the current line stipple pattern when drawing lines, see also LineStipple. EN_POLYGON_STIPPLE, //!< If enabled, use the current polygon stipple pattern when rendering polygons, see also PolygonStipple. // Point sprites EN_POINT_SPRITE, //!< If enabled, calculate texture coordinates for points based on texture environment and point parameter settings; Otherwise texture coordinates are constant across points. EN_PROGRAM_POINT_SIZE, //!< [GL_VERTEX_PROGRAM_POINT_SIZE/GL_PROGRAM_POINT_SIZE] If enabled, and a vertex shader is active, then the derived point size is taken from the (potentially clipped) shader builtin \p gl_PointSize and clamped to the implementation-dependent point size range| // Fixed function pipeline EN_ALPHA_TEST, //!< If enabled, performs alpha testing, see also AlphaFunc for more information. EN_LIGHTING, //!< If enabled, use the current lighting parameters to compute the vertex color; Otherwise, simply associate the current color with each vertex, see also Material, LightModel, and Light. EN_COLOR_SUM, //!< If enabled, add the secondary color value to the computed fragment color. EN_FOG, //!< If enabled, blend a fog color into the post-texturing color, see also Fog. EN_NORMALIZE, //!< If enabled, normal vectors are scaled to unit length after transformation, see also vl::EN_RESCALE_NORMAL. EN_RESCALE_NORMAL, //!< If enabled, normals are scaled by a scaling factor derived from the modelview matrix; vl::EN_RESCALE_NORMAL requires that the originally specified normals were of unit length, and that the modelview matrix contain only uniform scales for proper results, see also vl::EN_NORMALIZE. // Available only under OpenGL 2.x EN_VERTEX_PROGRAM_TWO_SIDE, //!< If enabled, and a vertex shader is active, it specifies that the GL will choose between front and back colors based on the polygon's face direction of which the vertex being shaded is a part; It has no effect on points or lines. // OpenGL 3.2 EN_TEXTURE_CUBE_MAP_SEAMLESS, //!< If enabled, cubemap textures are sampled such that when linearly sampling from the border between two adjacent faces, texels from both faces are used to generate the final sample value. When disabled, texels from only a single face are used to construct the final sample value. // OpenGL 3.0 EN_CLIP_DISTANCE0, //!< If enabled, clip geometry against user-defined half space #0. EN_CLIP_DISTANCE1, //!< If enabled, clip geometry against user-defined half space #1. EN_CLIP_DISTANCE2, //!< If enabled, clip geometry against user-defined half space #2. EN_CLIP_DISTANCE3, //!< If enabled, clip geometry against user-defined half space #3. EN_CLIP_DISTANCE4, //!< If enabled, clip geometry against user-defined half space #4. EN_CLIP_DISTANCE5, //!< If enabled, clip geometry against user-defined half space #5. EN_CLIP_DISTANCE6, //!< If enabled, clip geometry against user-defined half space #6. EN_CLIP_DISTANCE7, //!< If enabled, clip geometry against user-defined half space #7. // Multisampling EN_SAMPLE_ALPHA_TO_COVERAGE, //!< If enabled, compute a temporary coverage value where each bit is determined by the alpha value at the corresponding sample location; The temporary coverage value is then ANDed with the fragment coverage value. EN_SAMPLE_ALPHA_TO_ONE, //!< If enabled, each sample alpha value is replaced by the maximum representable alpha value. EN_SAMPLE_COVERAGE, //!< If enabled, the fragment's coverage is ANDed with the temporary coverage value; If GL_SAMPLE_COVERAGE_INVERT is set to GL_TRUE, invert the coverage value, see also SampleCoverage. EN_EnableCount, //!< For internal use only. EN_UnknownEnable //!< For internal use only. } EEnable; typedef enum { BU_STREAM_DRAW = GL_STREAM_DRAW, //!< Data is specified once and used at most a few times as the source of drawing and image specification commands. BU_STREAM_READ = GL_STREAM_READ, //!< Data is copied once from an OpenGL buffer and is used at most a few times by the application as data values. BU_STREAM_COPY = GL_STREAM_COPY, //!< Data is copied once from an OpenGL buffer and is used at most a few times as the source for drawing or image specification commands. BU_STATIC_DRAW = GL_STATIC_DRAW, //!< Data is specified once and used many times as the source of drawing or image specification commands. BU_STATIC_READ = GL_STATIC_READ, //!< Data is copied once from an OpenGL buffer and is used many times by the application as data values. BU_STATIC_COPY = GL_STATIC_COPY, //!< Data is copied once from an OpenGL buffer and is used many times as the source for drawing or image specification commands. BU_DYNAMIC_DRAW = GL_DYNAMIC_DRAW, //!< Data is specified many times and used many times as the source of drawing and image specification commands. BU_DYNAMIC_READ = GL_DYNAMIC_READ, //!< Data is copied many times from an OpenGL buffer and is used many times by the application as data values. BU_DYNAMIC_COPY = GL_DYNAMIC_COPY //!< Data is copied many times from an OpenGL buffer and is used many times as the source for drawing or image specification commands. } EBufferObjectUsage; typedef enum { BA_READ_ONLY = GL_READ_ONLY, BA_WRITE_ONLY = GL_WRITE_ONLY, BA_READ_WRITE = GL_READ_WRITE } EBufferObjectAccess; typedef enum { AlignLeft = 1, AlignHCenter = 2, AlignRight = 4, AlignTop = 8, AlignVCenter = 16, AlignBottom = 32 } EAlign; typedef enum { TextAlignLeft, TextAlignRight, TextAlignCenter, TextAlignJustify, } ETextAlign; typedef enum { Text2D = 1, Text3D = 2 } ETextMode; typedef enum { LeftToRightText, RightToLeftText, TopToBottomText } ETextLayout; typedef enum { NeverDepthSort, AlwaysDepthSort, AlphaDepthSort } EDepthSortMode; typedef enum { ID_None, ID_1D, ID_2D, ID_3D, ID_Cubemap, ID_Error } EImageDimension; typedef enum { ST_RenderStates = 1, ST_Enables = 2, ST_TextureSamplers = 4, ST_Lights = 8, ST_ClipPlanes = 16 } EStateType; typedef enum { RS_VertexAttrib, RS_VertexAttrib0 = RS_VertexAttrib, RS_VertexAttrib1, RS_VertexAttrib2, RS_VertexAttrib3, RS_VertexAttrib4, RS_VertexAttrib5, RS_VertexAttrib6, RS_VertexAttrib7, RS_AlphaFunc, RS_BlendColor, RS_BlendEquation, RS_BlendFunc, RS_Color, RS_ColorMask, RS_CullFace, RS_DepthFunc, RS_DepthMask, RS_DepthRange, RS_Fog, RS_FrontFace, RS_PolygonMode, RS_Hint, RS_LightModel, RS_LineStipple, RS_LineWidth, RS_LogicOp, RS_Material, RS_Normal, RS_PixelTransfer, RS_PointParameter, RS_PointSize, RS_PolygonOffset, RS_PolygonStipple, RS_SampleCoverage, RS_SecondaryColor, RS_ShadeModel, RS_StencilFunc, RS_StencilMask, RS_StencilOp, RS_GLSLProgram, RS_Light, RS_Light0 = RS_Light, RS_Light1, RS_Light2, RS_Light3, RS_Light4, RS_Light5, RS_Light6, RS_Light7, RS_ClipPlane, RS_ClipPlane0 = RS_ClipPlane, RS_ClipPlane1, RS_ClipPlane2, RS_ClipPlane3, RS_ClipPlane4, RS_ClipPlane5, RS_TextureSampler, RS_TextureSampler0 = RS_TextureSampler + 0, RS_TextureSampler1 = RS_TextureSampler + 1, RS_TextureSampler2 = RS_TextureSampler + 2, RS_TextureSampler3 = RS_TextureSampler + 3, RS_TextureSampler4 = RS_TextureSampler + 4, RS_TextureSampler5 = RS_TextureSampler + 5, RS_TextureSampler6 = RS_TextureSampler + 6, RS_TextureSampler7 = RS_TextureSampler + 7, RS_TextureSampler8 = RS_TextureSampler + 8, RS_TextureSampler9 = RS_TextureSampler + 9, RS_TextureSampler10 = RS_TextureSampler + 10, RS_TextureSampler11 = RS_TextureSampler + 11, RS_TextureSampler12 = RS_TextureSampler + 12, RS_TextureSampler13 = RS_TextureSampler + 13, RS_TextureSampler14 = RS_TextureSampler + 14, RS_TextureSampler15 = RS_TextureSampler + 15, /* ... */ RS_TexGen = RS_TextureSampler + VL_MAX_TEXTURE_IMAGE_UNITS, RS_TexGen0 = RS_TexGen + 0, RS_TexGen1 = RS_TexGen + 1, RS_TexGen2 = RS_TexGen + 2, RS_TexGen3 = RS_TexGen + 3, RS_TexGen4 = RS_TexGen + 4, RS_TexGen5 = RS_TexGen + 5, RS_TexGen6 = RS_TexGen + 6, RS_TexGen7 = RS_TexGen + 7, RS_TexGen8 = RS_TexGen + 8, RS_TexGen9 = RS_TexGen + 9, RS_TexGen10 = RS_TexGen + 10, RS_TexGen11 = RS_TexGen + 11, RS_TexGen12 = RS_TexGen + 12, RS_TexGen13 = RS_TexGen + 13, RS_TexGen14 = RS_TexGen + 14, RS_TexGen15 = RS_TexGen + 15, /* ... */ RS_TexEnv = RS_TexGen + VL_MAX_LEGACY_TEXTURE_UNITS, RS_TexEnv0 = RS_TexEnv + 0, RS_TexEnv1 = RS_TexEnv + 1, RS_TexEnv2 = RS_TexEnv + 2, RS_TexEnv3 = RS_TexEnv + 3, RS_TexEnv4 = RS_TexEnv + 4, RS_TexEnv5 = RS_TexEnv + 5, RS_TexEnv6 = RS_TexEnv + 6, RS_TexEnv7 = RS_TexEnv + 7, RS_TexEnv8 = RS_TexEnv + 8, RS_TexEnv9 = RS_TexEnv + 9, RS_TexEnv10 = RS_TexEnv + 10, RS_TexEnv11 = RS_TexEnv + 11, RS_TexEnv12 = RS_TexEnv + 12, RS_TexEnv13 = RS_TexEnv + 13, RS_TexEnv14 = RS_TexEnv + 14, RS_TexEnv15 = RS_TexEnv + 15, /* ... */ RS_TextureMatrix = RS_TexEnv + VL_MAX_LEGACY_TEXTURE_UNITS, RS_TextureMatrix0 = RS_TextureMatrix + 0, RS_TextureMatrix1 = RS_TextureMatrix + 1, RS_TextureMatrix2 = RS_TextureMatrix + 2, RS_TextureMatrix3 = RS_TextureMatrix + 3, RS_TextureMatrix4 = RS_TextureMatrix + 4, RS_TextureMatrix5 = RS_TextureMatrix + 5, RS_TextureMatrix6 = RS_TextureMatrix + 6, RS_TextureMatrix7 = RS_TextureMatrix + 7, RS_TextureMatrix8 = RS_TextureMatrix + 8, RS_TextureMatrix9 = RS_TextureMatrix + 9, RS_TextureMatrix10 = RS_TextureMatrix + 10, RS_TextureMatrix11 = RS_TextureMatrix + 11, RS_TextureMatrix12 = RS_TextureMatrix + 12, RS_TextureMatrix13 = RS_TextureMatrix + 13, RS_TextureMatrix14 = RS_TextureMatrix + 14, RS_TextureMatrix15 = RS_TextureMatrix + 15, /* ... */ RS_RenderStateCount = RS_TextureMatrix + VL_MAX_LEGACY_TEXTURE_UNITS, RS_NONE, } ERenderState; typedef enum { BB_COLOR_BUFFER_BIT = GL_COLOR_BUFFER_BIT, BB_DEPTH_BUFFER_BIT = GL_DEPTH_BUFFER_BIT, BB_STENCIL_BUFFER_BIT = GL_STENCIL_BUFFER_BIT } EBufferBits; typedef enum { BT_AxisAlignedBillboard = 1, BT_SphericalBillboard = 2 } EBillboardType; typedef enum { SM_SortBackToFront, SM_SortFrontToBack } ESortMode; typedef enum { GM_GetOrCreate, GM_DontCreate } EGetMode; typedef enum { SE_Unknown, SE_ASCII, SE_UTF8, SE_UTF16_BE, SE_UTF16_LE, SE_UTF32_BE, SE_UTF32_LE, SE_LATIN1, } EStringEncoding; typedef enum { OM_ReadOnly, OM_WriteOnly, } EOpenMode; typedef enum { Key_None = 0, Key_0, Key_1, Key_2, Key_3, Key_4, Key_5, Key_6, Key_7, Key_8, Key_9, Key_A, Key_B, Key_C, Key_D, Key_E, Key_F, Key_G, Key_H, Key_I, Key_J, Key_K, Key_L, Key_M, Key_N, Key_O, Key_P, Key_Q, Key_R, Key_S, Key_T, Key_U, Key_V, Key_W, Key_X, Key_Y, Key_Z, Key_Return, Key_BackSpace, Key_Tab, Key_Space, Key_Clear, Key_Escape, Key_Exclam, Key_QuoteDbl, Key_Hash, Key_Dollar, Key_Ampersand, Key_Quote, Key_LeftParen, Key_RightParen, Key_Asterisk, Key_Plus, Key_Comma, Key_Minus, Key_Period, Key_Slash, Key_Colon, Key_Semicolon, Key_Less, Key_Equal, Key_Greater, Key_Question, Key_At, Key_LeftBracket, Key_BackSlash, Key_RightBracket, Key_Caret, Key_Underscore, Key_QuoteLeft, // non unicode keys Key_Ctrl, Key_LeftCtrl, Key_RightCtrl, Key_Alt, Key_LeftAlt, Key_RightAlt, Key_Shift, Key_LeftShift, Key_RightShift, Key_Insert, Key_Delete, Key_Home, Key_End, Key_Print, Key_Pause, Key_PageUp, Key_PageDown, Key_Left, Key_Right, Key_Up, Key_Down, Key_F1, Key_F2, Key_F3, Key_F4, Key_F5, Key_F6, Key_F7, Key_F8, Key_F9, Key_F10, Key_F11, Key_F12, Key_Unknown, Key_NumberOfKeys } EKey; typedef enum { NoButton = 0, LeftButton = 1, RightButton = 2, MiddleButton = 4, UnknownButton, } EMouseButton; typedef enum { IN_Local = 0x00, //!< Does not propagates to children (thus cannot override children settings); can be overridden. IN_Propagate = 0x01, //!< Propagates to children; does not override children settings; can be overridden. IN_Sticky = 0x04, //!< Does not propagates to children (thus cannot override children settings); cannot be overridden. IN_Propagate_Overrides_Sticky = 0x01 | 0x02 | 0x04, //!< Propagates to children; overrides children settings; cannot be overridden. IN_Propagate_Overrides = 0x01 | 0x02, //!< Propagates to children; overrides children settings; can be overridden. IN_Propagate_Sticky = 0x01 | 0x04, //!< Propagates to children; does not override children settings; cannot be overridden. } EInheritance; typedef enum { ST_VERTEX_SHADER = GL_VERTEX_SHADER, //!< A shader that is intended to run on the programmable vertex processor. ST_TESS_CONTROL_SHADER = GL_TESS_CONTROL_SHADER, //!< A shader that is intended to run on the programmable tessellation processor in the control stage. ST_TESS_EVALUATION_SHADER = GL_TESS_EVALUATION_SHADER, //!< A shader that is intended to run on the programmable tessellation processor in the evaluation stage. ST_GEOMETRY_SHADER = GL_GEOMETRY_SHADER, //!< A shader that is intended to run on the programmable geometry processor. ST_FRAGMENT_SHADER = GL_FRAGMENT_SHADER //!< A shader that is intended to run on the programmable fragment processor. } EShaderType; typedef enum { TW_TESS_WINDING_ODD = GLU_TESS_WINDING_ODD, TW_TESS_WINDING_NONZERO = GLU_TESS_WINDING_NONZERO, TW_TESS_WINDING_POSITIVE = GLU_TESS_WINDING_POSITIVE, TW_TESS_WINDING_NEGATIVE = GLU_TESS_WINDING_NEGATIVE, TW_TESS_WINDING_ABS_GEQ_TWO = GLU_TESS_WINDING_ABS_GEQ_TWO } ETessellationWinding; typedef enum { VEL_VERBOSITY_SILENT, //!<< No log information is generated. VEL_VERBOSITY_ERROR, //!<< Outputs critical and runtime error messages. VEL_VERBOSITY_NORMAL, //!<< Outputs normal information messages, plus all error messages. VEL_VERBOSITY_DEBUG //!<< Outputs extra information messages useful for debugging, plus all normal and error messages. } EVerbosityLevel; typedef enum { LL_LogNotify, LL_LogPrint, LL_LogBug, LL_LogError, LL_LogWarning, LL_LogDebug, } ELogLevel; typedef enum { PPCO_LOWER_LEFT = GL_LOWER_LEFT, PPCO_UPPER_LEFT = GL_UPPER_LEFT } EPointSpriteCoordOrigin; //! Specifies how the data of a VertexAttribInfo is sent to the OpenGL driver, //! see also http://www.opengl.org/sdk/docs/man4/xhtml/glVertexAttribPointer.xml typedef enum { VAI_NORMAL, //!< Data will be sent using glVertexAttribPointer(), that is, //!< data will be converted to floating point precision and eventually normalized. VAI_INTEGER, //!< Data will be sent using glVertexAttribIPointer(), that is, //!< values are always left as integer values, data format must be an \a integer type. VAI_DOUBLE, //!< Data will be sent using glVertexAttribLPointer(), that is, it will be associated with a //!< shader attribute variable declared with 64-bit double precision components, data format must be \a double. } EVertexAttribInterpretation; //! Default vertex attribute bindings typedef enum { VA_Position = 0, VA_Normal = 1, VA_Color = 2, VA_SecondaryColor = 3, VA_FogCoord = 4, VA_TexCoord0 = 5, VA_TexCoord1 = 6, VA_TexCoord2 = 7, VA_TexCoord3 = 8, VA_TexCoord4 = 9, VA_TexCoord5 = 10, VA_TexCoord6 = 11, VA_TexCoord7 = 12, VA_TexCoord8 = 13, VA_TexCoord9 = 14, VA_TexCoord10 = 15, // Max number of tex coord attribute arrays VA_MaxTexCoordCount = 11, // Max vertex attribute arrays VA_MaxAttribCount = 16, // Handy aliases VA_TexCoordDiffuse = VA_TexCoord0, // diffuse texture coords VA_TexCoordDetail = VA_TexCoord1, // detail texture coords VA_TexCoordShadow = VA_TexCoord2, // precomputed shadow/light map texture coords VA_TexCoordSpecular = VA_TexCoord3, // specular texture coords VA_TexCoordNormalMap = VA_TexCoord4, // normalmap texture coords VA_TexCoordDisplace = VA_TexCoord5, // dispace texture coords for tesselation, heightmap etc. VA_Tangent = VA_TexCoord6, // tangent vectors (normal mapping) VA_Bitangent = VA_TexCoord7, // bitangent vectors (normal mapping) VA_NextPosition = VA_TexCoord8, // next frame vertex position for vertex blending VA_NextNormal = VA_TexCoord9, // next frame normal position for vertex blending } EVertexAttribBinding; //! Uniform types, see also vl::UniformInfo, vl::GLSLProgram, vl::Uniform, http://www.opengl.org/sdk/docs/man4/xhtml/glGetActiveUniform.xml typedef enum { UT_NONE = 0x0, UT_FLOAT = GL_FLOAT, //!< float UT_FLOAT_VEC2 = GL_FLOAT_VEC2, //!< vec2 UT_FLOAT_VEC3 = GL_FLOAT_VEC3, //!< vec3 UT_FLOAT_VEC4 = GL_FLOAT_VEC4, //!< vec4 UT_DOUBLE = GL_DOUBLE, //!< double UT_DOUBLE_VEC2 = GL_DOUBLE_VEC2, //!< dvec2 UT_DOUBLE_VEC3 = GL_DOUBLE_VEC3, //!< dvec3 UT_DOUBLE_VEC4 = GL_DOUBLE_VEC4, //!< dvec4 UT_INT = GL_INT, //!< int UT_INT_VEC2 = GL_INT_VEC2, //!< ivec2 UT_INT_VEC3 = GL_INT_VEC3, //!< ivec3 UT_INT_VEC4 = GL_INT_VEC4, //!< ivec4 UT_UNSIGNED_INT = GL_UNSIGNED_INT, //!< unsigned int UT_UNSIGNED_INT_VEC2 = GL_UNSIGNED_INT_VEC2, //!< uvec2 UT_UNSIGNED_INT_VEC3 = GL_UNSIGNED_INT_VEC3, //!< uvec3 UT_UNSIGNED_INT_VEC4 = GL_UNSIGNED_INT_VEC4, //!< uvec4 UT_BOOL = GL_BOOL, //!< bool UT_BOOL_VEC2 = GL_BOOL_VEC2, //!< bvec2 UT_BOOL_VEC3 = GL_BOOL_VEC3, //!< bvec3 UT_BOOL_VEC4 = GL_BOOL_VEC4, //!< bvec4 UT_FLOAT_MAT2 = GL_FLOAT_MAT2, //!< mat2 UT_FLOAT_MAT3 = GL_FLOAT_MAT3, //!< mat3 UT_FLOAT_MAT4 = GL_FLOAT_MAT4, //!< mat4 UT_FLOAT_MAT2x3 = GL_FLOAT_MAT2x3, //!< mat2x3 UT_FLOAT_MAT2x4 = GL_FLOAT_MAT2x4, //!< mat2x4 UT_FLOAT_MAT3x2 = GL_FLOAT_MAT3x2, //!< mat3x2 UT_FLOAT_MAT3x4 = GL_FLOAT_MAT3x4 , //!< mat3x4 UT_FLOAT_MAT4x2 = GL_FLOAT_MAT4x2 , //!< mat4x2 UT_FLOAT_MAT4x3 = GL_FLOAT_MAT4x3 , //!< mat4x3 UT_DOUBLE_MAT2 = GL_DOUBLE_MAT2 , //!< dmat2 UT_DOUBLE_MAT3 = GL_DOUBLE_MAT3 , //!< dmat3 UT_DOUBLE_MAT4 = GL_DOUBLE_MAT4 , //!< dmat4 UT_DOUBLE_MAT2x3 = GL_DOUBLE_MAT2x3 , //!< dmat2x3 UT_DOUBLE_MAT2x4 = GL_DOUBLE_MAT2x4 , //!< dmat2x4 UT_DOUBLE_MAT3x2 = GL_DOUBLE_MAT3x2 , //!< dmat3x2 UT_DOUBLE_MAT3x4 = GL_DOUBLE_MAT3x4 , //!< dmat3x4 UT_DOUBLE_MAT4x2 = GL_DOUBLE_MAT4x2 , //!< dmat4x2 UT_DOUBLE_MAT4x3 = GL_DOUBLE_MAT4x3 , //!< dmat4x3 UT_SAMPLER_1D = GL_SAMPLER_1D , //!< sampler1D UT_SAMPLER_2D = GL_SAMPLER_2D , //!< sampler2D UT_SAMPLER_3D = GL_SAMPLER_3D , //!< sampler3D UT_SAMPLER_CUBE = GL_SAMPLER_CUBE , //!< samplerCube UT_SAMPLER_1D_SHADOW = GL_SAMPLER_1D_SHADOW , //!< sampler1DShadow UT_SAMPLER_2D_SHADOW = GL_SAMPLER_2D_SHADOW , //!< sampler2DShadow UT_SAMPLER_1D_ARRAY = GL_SAMPLER_1D_ARRAY , //!< sampler1DArray UT_SAMPLER_2D_ARRAY = GL_SAMPLER_2D_ARRAY , //!< sampler2DArray UT_SAMPLER_1D_ARRAY_SHADOW = GL_SAMPLER_1D_ARRAY_SHADOW , //!< sampler1DArrayShadow UT_SAMPLER_2D_ARRAY_SHADOW = GL_SAMPLER_2D_ARRAY_SHADOW , //!< sampler2DArrayShadow UT_SAMPLER_2D_MULTISAMPLE = GL_SAMPLER_2D_MULTISAMPLE , //!< sampler2DMS UT_SAMPLER_2D_MULTISAMPLE_ARRAY = GL_SAMPLER_2D_MULTISAMPLE_ARRAY , //!< sampler2DMSArray UT_SAMPLER_CUBE_SHADOW = GL_SAMPLER_CUBE_SHADOW , //!< samplerCubeShadow UT_SAMPLER_BUFFER = GL_SAMPLER_BUFFER , //!< samplerBuffer UT_SAMPLER_2D_RECT = GL_SAMPLER_2D_RECT , //!< sampler2DRect UT_SAMPLER_2D_RECT_SHADOW = GL_SAMPLER_2D_RECT_SHADOW , //!< sampler2DRectShadow UT_INT_SAMPLER_1D = GL_INT_SAMPLER_1D , //!< isampler1D UT_INT_SAMPLER_2D = GL_INT_SAMPLER_2D , //!< isampler2D UT_INT_SAMPLER_3D = GL_INT_SAMPLER_3D , //!< isampler3D UT_INT_SAMPLER_CUBE = GL_INT_SAMPLER_CUBE , //!< isamplerCube UT_INT_SAMPLER_1D_ARRAY = GL_INT_SAMPLER_1D_ARRAY , //!< isampler1DArray UT_INT_SAMPLER_2D_ARRAY = GL_INT_SAMPLER_2D_ARRAY , //!< isampler2DArray UT_INT_SAMPLER_2D_MULTISAMPLE = GL_INT_SAMPLER_2D_MULTISAMPLE , //!< isampler2DMS UT_INT_SAMPLER_2D_MULTISAMPLE_ARRAY = GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY , //!< isampler2DMSArray UT_INT_SAMPLER_BUFFER = GL_INT_SAMPLER_BUFFER , //!< isamplerBuffer UT_INT_SAMPLER_2D_RECT = GL_INT_SAMPLER_2D_RECT , //!< isampler2DRect UT_UNSIGNED_INT_SAMPLER_1D = GL_UNSIGNED_INT_SAMPLER_1D , //!< usampler1D UT_UNSIGNED_INT_SAMPLER_2D = GL_UNSIGNED_INT_SAMPLER_2D , //!< usampler2D UT_UNSIGNED_INT_SAMPLER_3D = GL_UNSIGNED_INT_SAMPLER_3D , //!< usampler3D UT_UNSIGNED_INT_SAMPLER_CUBE = GL_UNSIGNED_INT_SAMPLER_CUBE , //!< usamplerCube UT_UNSIGNED_INT_SAMPLER_1D_ARRAY = GL_UNSIGNED_INT_SAMPLER_1D_ARRAY , //!< usampler2DArray UT_UNSIGNED_INT_SAMPLER_2D_ARRAY = GL_UNSIGNED_INT_SAMPLER_2D_ARRAY , //!< usampler2DArray UT_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE = GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE , //!< usampler2DMS UT_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY = GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY , //!< usampler2DMSArray UT_UNSIGNED_INT_SAMPLER_BUFFER = GL_UNSIGNED_INT_SAMPLER_BUFFER , //!< usamplerBuffer UT_UNSIGNED_INT_SAMPLER_2D_RECT = GL_UNSIGNED_INT_SAMPLER_2D_RECT , //!< usampler2DRect UT_UniformTypeCount } EUniformType; //! GLSLProgram attribute types, see also GLSLProgram::activeAttribs() and http://www.opengl.org/sdk/docs/man4/xhtml/glGetActiveAttrib.xml typedef enum { AT_FLOAT = GL_FLOAT, //!< float AT_FLOAT_VEC2 = GL_FLOAT_VEC2, //!< vec2 AT_FLOAT_VEC3 = GL_FLOAT_VEC3, //!< vec3 AT_FLOAT_VEC4 = GL_FLOAT_VEC4, //!< vec4 AT_FLOAT_MAT2 = GL_FLOAT_MAT2, //!< mat2 AT_FLOAT_MAT3 = GL_FLOAT_MAT3, //!< mat3 AT_FLOAT_MAT4 = GL_FLOAT_MAT4, //!< mat4 AT_FLOAT_MAT2x3 = GL_FLOAT_MAT2x3, //!< mat2x3 AT_FLOAT_MAT2x4 = GL_FLOAT_MAT2x4, //!< mat2x4 AT_FLOAT_MAT3x2 = GL_FLOAT_MAT3x2, //!< mat3x2 AT_FLOAT_MAT3x4 = GL_FLOAT_MAT3x4, //!< mat3x4 AT_FLOAT_MAT4x2 = GL_FLOAT_MAT4x2, //!< mat4x2 AT_FLOAT_MAT4x3 = GL_FLOAT_MAT4x3, //!< mat4x3 AT_INT = GL_INT, //!< int AT_INT_VEC2 = GL_INT_VEC2, //!< ivec2 AT_INT_VEC3 = GL_INT_VEC3, //!< ivec3 AT_INT_VEC4 = GL_INT_VEC4, //!< ivec4 AT_UNSIGNED_INT = GL_UNSIGNED_INT, //!< unsigned int AT_UNSIGNED_INT_VEC2 = GL_UNSIGNED_INT_VEC2, //!< vec2 AT_UNSIGNED_INT_VEC3 = GL_UNSIGNED_INT_VEC3, //!< vec3 AT_UNSIGNED_INT_VEC4 = GL_UNSIGNED_INT_VEC4, //!< vec4 AT_DOUBLE = GL_DOUBLE, //!< double AT_DOUBLE_VEC2 = GL_DOUBLE_VEC2, //!< dvec2 AT_DOUBLE_VEC3 = GL_DOUBLE_VEC3, //!< dvec3 AT_DOUBLE_VEC4 = GL_DOUBLE_VEC4, //!< dvec4 AT_DOUBLE_MAT2 = GL_DOUBLE_MAT2, //!< dmat2 AT_DOUBLE_MAT3 = GL_DOUBLE_MAT3, //!< dmat3 AT_DOUBLE_MAT4 = GL_DOUBLE_MAT4, //!< dmat4 AT_DOUBLE_MAT2x3 = GL_DOUBLE_MAT2x3, //!< dmat2x3 AT_DOUBLE_MAT2x4 = GL_DOUBLE_MAT2x4, //!< dmat2x4 AT_DOUBLE_MAT3x2 = GL_DOUBLE_MAT3x2, //!< dmat3x2 AT_DOUBLE_MAT3x4 = GL_DOUBLE_MAT3x4, //!< dmat3x4 AT_DOUBLE_MAT4x2 = GL_DOUBLE_MAT4x2, //!< dmat4x2 AT_DOUBLE_MAT4x3 = GL_DOUBLE_MAT4x3, //!< dmat4x3 } EAttributeType; typedef enum { PMT_UserProjection, //!< Unknown or other projection type. PMT_OrthographicProjection, //!< Projection matrix generated by mat4::getOrtho() or similar. Any orthographic projection. PMT_PerspectiveProjection, //!< Projection matrix generated by mat4::getPerspective() or similar. Symmetrical (on-axis) perspective projection. PMT_PerspectiveProjectionFrustum //!< Projection matrix generated by mat4::getFrustum() or similar. Possibly asymmetrical (off-axis) perspetive projection, like the ones used for tile-rendering. } EProjectionMatrixType; typedef enum { BUF_ForceUpdate = 0x1, BUF_DiscardRamBuffer = 0x2, } EBufferObjectUpdateFlags; typedef enum { //! Keeps the local buffer on RAM and updates the BufferObject only if it is marked as dirty. The BufferObject is marked as clean after the update. BUM_KeepRamBuffer = 0x0, //! Keeps the local buffer on RAM and updates the BufferObject always, even if it is not marked as dirty. The BufferObject is marked as clean after the update. BUM_KeepRamBufferAndForceUpdate = BUF_ForceUpdate, //! Discards the local buffer on RAM and updates the BufferObject only if it is marked as dirty. The BufferObject is marked as clean after the update. BUM_DiscardRamBuffer = BUF_DiscardRamBuffer, //! Discards the local buffer on RAM and updates the BufferObject always, even if it is not marked as dirty. The BufferObject is marked as clean after the update. BUM_DiscardRamBufferAndForceUpdate = BUF_DiscardRamBuffer | BUF_ForceUpdate } EBufferObjectUpdateMode; typedef enum { SCM_OwnShaders, //!< A local copy of the Shaders will be created but the contained render states will be shared. SCM_ShareShaders //!< The Shader pointer will be copied as is. } EShaderCopyMode; typedef enum { RCS_RenderingStarted, RCS_RenderingFinished } EResetContextStates; typedef enum { GLP_Default, GLP_Compatibility, GLP_Core } EOpenGLProfile; } #endif