2024-03-19 17:45:12 +08:00

1557 lines
56 KiB
C++

/**************************************************************************************/
/* */
/* 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 <vlCore/OpenGLDefs.hpp>
#include <vlCore/config.hpp>
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