Commit d53f361c authored by Robert Menzel's avatar Robert Menzel

changed mixed CRLF/LF to LF

parent 3a8b2ebe
CMAKE_MINIMUM_REQUIRED (VERSION 2.6)
################################################################################
# Global Settings
################################################################################
# Name of the Project
PROJECT(ACGL)
INCLUDE(${CMAKE_SOURCE_DIR}/cmake/CompileOptions.txt)
# Specify dependencies
SET(NEED_ACGL_GLOBAL_EXTERN_DIR TRUE)
INCLUDE(${CMAKE_SOURCE_DIR}/cmake/GlobalAndLocalExternACGL.txt)
# OpenGL Support
IF(NOT DEFINED OPENGL_SUPPORT)
IF(NOT DEFINED OPENGL_SUPPORT_CORE_4_0)
SET(OPENGL_SUPPORT_CORE_4_0 TRUE CACHE BOOL "")
ENDIF()
IF(NOT DEFINED OPENGL_SUPPORT_ES_2_1)
SET(OPENGL_SUPPORT_ES_2_1 TRUE CACHE BOOL "")
ENDIF()
IF(OPENGL_SUPPORT_CORE_4_0)
SET(OPENGL_SUPPORT_LIST ${OPENGL_SUPPORT_LIST} GL_CORE_4_0)
ENDIF()
IF(OPENGL_SUPPORT_ES_2_1)
SET(OPENGL_SUPPORT_LIST ${OPENGL_SUPPORT_LIST} GL_ES_2_1)
ENDIF()
ELSE()
SET(OPENGL_SUPPORT_LIST ${OPENGL_SUPPORT})
ENDIF()
FOREACH(OPENGL_SUPPORT ${OPENGL_SUPPORT_LIST} )
################################################################################
# Basic Configuration
################################################################################
# Name of the Project
PROJECT(AC${OPENGL_SUPPORT})
# Where to find the cmake finders?
SET(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake" ${CMAKE_MODULE_PATH})
# Target directory
SET(LIBRARY_OUTPUT_PATH "${CMAKE_CURRENT_SOURCE_DIR}/lib")
################################################################################
# Project Files
################################################################################
# Find all used files of certain file-types
FILE(GLOB_RECURSE SOURCE_FILES "${CMAKE_CURRENT_SOURCE_DIR}/src/*.cc")
FILE(GLOB_RECURSE INCLUDE_FILES "${CMAKE_CURRENT_SOURCE_DIR}/include/*.hh")
# Add ACGL to the include path
INCLUDE_DIRECTORIES("${CMAKE_CURRENT_SOURCE_DIR}/include")
################################################################################
# External Libraries
################################################################################
# Qt
SET(QT_USE_QTOPENGL TRUE)
FIND_PACKAGE(Qt4 REQUIRED)
INCLUDE(${QT_USE_FILE})
SET(LIBRARIES ${LIBRARIES} ${QT_LIBRARIES})
# GLM
FIND_PACKAGE(GLM REQUIRED)
INCLUDE_DIRECTORIES(${GLM_INCLUDE_DIR})
# GLEW
FIND_PACKAGE(GLEW REQUIRED)
INCLUDE_DIRECTORIES(${GLEW_INCLUDE_DIR})
SET(LIBRARIES ${LIBRARIES} ${GLEW_LIBRARIES})
################################################################################
# Final Definition
################################################################################
# Define the Project, add all required sources and dependencies to it
ADD_LIBRARY(AC${OPENGL_SUPPORT}${COMPILE_POSTFIX} STATIC ${SOURCE_FILES} ${INCLUDE_FILES})
TARGET_LINK_LIBRARIES(AC${OPENGL_SUPPORT}${COMPILE_POSTFIX} ${LIBRARIES})
ENDFOREACH()
CMAKE_MINIMUM_REQUIRED (VERSION 2.6)
################################################################################
# Global Settings
################################################################################
# Name of the Project
PROJECT(ACGL)
INCLUDE(${CMAKE_SOURCE_DIR}/cmake/CompileOptions.txt)
# Specify dependencies
SET(NEED_ACGL_GLOBAL_EXTERN_DIR TRUE)
INCLUDE(${CMAKE_SOURCE_DIR}/cmake/GlobalAndLocalExternACGL.txt)
# OpenGL Support
IF(NOT DEFINED OPENGL_SUPPORT)
IF(NOT DEFINED OPENGL_SUPPORT_CORE_4_0)
SET(OPENGL_SUPPORT_CORE_4_0 TRUE CACHE BOOL "")
ENDIF()
IF(NOT DEFINED OPENGL_SUPPORT_ES_2_1)
SET(OPENGL_SUPPORT_ES_2_1 TRUE CACHE BOOL "")
ENDIF()
IF(OPENGL_SUPPORT_CORE_4_0)
SET(OPENGL_SUPPORT_LIST ${OPENGL_SUPPORT_LIST} GL_CORE_4_0)
ENDIF()
IF(OPENGL_SUPPORT_ES_2_1)
SET(OPENGL_SUPPORT_LIST ${OPENGL_SUPPORT_LIST} GL_ES_2_1)
ENDIF()
ELSE()
SET(OPENGL_SUPPORT_LIST ${OPENGL_SUPPORT})
ENDIF()
FOREACH(OPENGL_SUPPORT ${OPENGL_SUPPORT_LIST} )
################################################################################
# Basic Configuration
################################################################################
# Name of the Project
PROJECT(AC${OPENGL_SUPPORT})
# Where to find the cmake finders?
SET(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake" ${CMAKE_MODULE_PATH})
# Target directory
SET(LIBRARY_OUTPUT_PATH "${CMAKE_CURRENT_SOURCE_DIR}/lib")
################################################################################
# Project Files
################################################################################
# Find all used files of certain file-types
FILE(GLOB_RECURSE SOURCE_FILES "${CMAKE_CURRENT_SOURCE_DIR}/src/*.cc")
FILE(GLOB_RECURSE INCLUDE_FILES "${CMAKE_CURRENT_SOURCE_DIR}/include/*.hh")
# Add ACGL to the include path
INCLUDE_DIRECTORIES("${CMAKE_CURRENT_SOURCE_DIR}/include")
################################################################################
# External Libraries
################################################################################
# Qt
SET(QT_USE_QTOPENGL TRUE)
FIND_PACKAGE(Qt4 REQUIRED)
INCLUDE(${QT_USE_FILE})
SET(LIBRARIES ${LIBRARIES} ${QT_LIBRARIES})
# GLM
FIND_PACKAGE(GLM REQUIRED)
INCLUDE_DIRECTORIES(${GLM_INCLUDE_DIR})
# GLEW
FIND_PACKAGE(GLEW REQUIRED)
INCLUDE_DIRECTORIES(${GLEW_INCLUDE_DIR})
SET(LIBRARIES ${LIBRARIES} ${GLEW_LIBRARIES})
################################################################################
# Final Definition
################################################################################
# Define the Project, add all required sources and dependencies to it
ADD_LIBRARY(AC${OPENGL_SUPPORT}${COMPILE_POSTFIX} STATIC ${SOURCE_FILES} ${INCLUDE_FILES})
TARGET_LINK_LIBRARIES(AC${OPENGL_SUPPORT}${COMPILE_POSTFIX} ${LIBRARIES})
ENDFOREACH()
......@@ -3,112 +3,114 @@
// All rights reserved. //
////////////////////////////////////////////////////////////////////////////////
#ifndef ACGL_GLUTILS_TOOLS_HH
#define ACGL_GLUTILS_TOOLS_HH
#include <ACGL/ACGL.hh>
#include <ACGL/GL.hh>
namespace ACGL{
namespace GLUtils{
namespace Tools{
inline GLint getGLTypeSize ( GLenum _type )
{
switch(_type)
{
case GL_BYTE: return sizeof(GLubyte);
case GL_UNSIGNED_BYTE: return sizeof(GLbyte);
case GL_SHORT: return sizeof(GLshort);
case GL_UNSIGNED_SHORT: return sizeof(GLushort);
case GL_INT: return sizeof(GLint);
case GL_UNSIGNED_INT: return sizeof(GLuint);
case GL_FLOAT: return sizeof(GLfloat);
case GL_DOUBLE: return sizeof(GLdouble);
}
return 0;
}
// for every OpenGL error enum this will return a human readable version of it
// similar to gluErrorString, but that function is not available on all plattforms
// (read: iOS)
const GLubyte* acglErrorString( GLenum err );
/*
* This function can be used outside of the ACGL framework to check always(!) for
* OpenGL errors. It will print the errors and return the error code of the last one.
* Each OpenGL command can only throw one error, errors can only stack up if this
* function or glGetError was not called often enough (and some OpenGL implementations
* will forget old errors if new ones occur).
*/
#define openGLError() openGLError_( __FILE__, __LINE__ )
/*
* This function is used internally in ACGL - but not directly. It gets called from all
* other rare/common/critical error checks. The __FILE__ __LINE macros have to be used in
* those to get the correct values from the caller file, if we would use the macro
* above we could get the file/line from this file, which isn't helping.
*/
GLenum openGLError_( const char *_fileName, const unsigned long _lineNumber );
/*
* Inside of ACGL we distinguish between rare, common and critical errors. Each kind can be
* switched off which turns the function into nothing after compiler optimization. If an
* error check is turned off it will always behave as if there was no error, even if there
* is one...
*
* Per default a debug build enables critical and common errors, a release build only critical
* ones.
*
* We have two functions for each kind:
* openGL____Error() will print error messages and return the last error (or GL_NO_ERROR)
* openGL____ErrorOccured() will print error messages and retrun true if there was an error
*
* The definition of rare/common/critical is a bit fuzzy:
*
* critical: Errors which can occur even in a bug-free app, like out-of-memory errors.
* These checks are rare, stuff like glCreate calls get checked here.
* Tests for critical errors should not impact the performance of the app measurably.
*
* common: Errors which are quite common while developing. Misuse of the library etc.
* Setting uniforms which don't exist or shader compile errors are candidates for
* common errors. Places where OpenGL resources are calles by a string etc.
*
* rare: Errors which are so uncommon that we don't even check those ina normal debug build.
* Switching these on can impact performance as there can be alot of them. If theres a
* OpenGL error somewhere in the code, switch these checks on to find the correct spot.
*
* OpenGL error checks that are more complicated than just a glGetError call will be wrapped in the
* same defines, this can be used in application code as well.
*
*/
#ifdef ACGL_CHECK_CRITICAL_GL_ERRORS
# define openGLCriticalError() openGLError_( __FILE__, __LINE__ )
# define openGLCriticalErrorOccured() (openGLError_( __FILE__, __LINE__ ) != GL_NO_ERROR)
#else
inline GLenum openGLCriticalError() { return GL_NO_ERROR; }
inline bool openGLCriticalErrorOccured() { return false; }
#endif
#ifdef ACGL_CHECK_COMMON_GL_ERRORS
# define openGLCommonError() openGLError_( __FILE__, __LINE__ )
# define openGLCommonErrorOccured() (openGLError_( __FILE__, __LINE__ ) != GL_NO_ERROR)
#else
inline GLenum openGLCommonError() { return GL_NO_ERROR; }
inline bool openGLCommonErrorOccured() { return false; }
#endif
#ifdef ACGL_CHECK_RARE_GL_ERRORS
# define openGLRareError() openGLError_( __FILE__, __LINE__ )
# define openGLRareErrorOccured() (openGLError_( __FILE__, __LINE__ ) != GL_NO_ERROR)
#else
inline GLenum openGLRareError() { return GL_NO_ERROR; }
inline bool openGLRareErrorOccured() { return false; }
#endif
} // Tools
} // GLUtils
} // ACGL
#endif // ACGL_GLUTILS_TOOLS_HH
#ifndef ACGL_GLUTILS_TOOLS_HH
#define ACGL_GLUTILS_TOOLS_HH
#include <ACGL/ACGL.hh>
#include <ACGL/GL.hh>
namespace ACGL{
namespace GLUtils{
namespace Tools{
inline GLint getGLTypeSize ( GLenum _type )
{
switch(_type)
{
case GL_BYTE: return sizeof(GLubyte);
case GL_UNSIGNED_BYTE: return sizeof(GLbyte);
case GL_SHORT: return sizeof(GLshort);
case GL_UNSIGNED_SHORT: return sizeof(GLushort);
case GL_INT: return sizeof(GLint);
case GL_UNSIGNED_INT: return sizeof(GLuint);
case GL_FLOAT: return sizeof(GLfloat);
case GL_DOUBLE: return sizeof(GLdouble);
}
return 0;
}
// for every OpenGL error enum this will return a human readable version of it
// similar to gluErrorString, but that function is not available on all plattforms
// (read: iOS)
const GLubyte* acglErrorString( GLenum err );
/*
* This function can be used outside of the ACGL framework to check always(!) for
* OpenGL errors. It will print the errors and return the error code of the last one.
* Each OpenGL command can only throw one error, errors can only stack up if this
* function or glGetError was not called often enough (and some OpenGL implementations
* will forget old errors if new ones occur).
*/
#define openGLError() openGLError_( __FILE__, __LINE__ )
/*
* This function is used internally in ACGL - but not directly. It gets called from all
* other rare/common/critical error checks. The __FILE__ __LINE macros have to be used in
* those to get the correct values from the caller file, if we would use the macro
* above we could get the file/line from this file, which isn't helping.
*/
GLenum openGLError_( const char *_fileName, const unsigned long _lineNumber );
/*
* Inside of ACGL we distinguish between rare, common and critical errors. Each kind can be
* switched off which turns the function into nothing after compiler optimization. If an
* error check is turned off it will always behave as if there was no error, even if there
* is one...
*
* Per default a debug build enables critical and common errors, a release build only critical
* ones.
*
* We have two functions for each kind:
* openGL____Error() will print error messages and return the last error (or GL_NO_ERROR)
* openGL____ErrorOccured() will print error messages and retrun true if there was an error
*
* The definition of rare/common/critical is a bit fuzzy:
*
* critical: Errors which can occur even in a bug-free app, like out-of-memory errors.
* These checks are rare, stuff like glCreate calls get checked here.
* Tests for critical errors should not impact the performance of the app measurably.
*
* common:
* Errors which are quite common while developing. Misuse of the library etc.
* Setting uniforms which don't exist or shader compile errors are candidates for
* common errors. Places where OpenGL resources are calles by a string etc.
*
* rare: Errors which are so uncommon that we don't even check those ina normal debug build.
* Switching these on can impact performance as there can be alot of them. If theres a
* OpenGL error somewhere in the code, switch these checks on to find the correct spot.
*
* OpenGL error checks that are more complicated than just a glGetError call will be wrapped in the
* same defines, this can be used in application code as well.
*
*/
#ifdef ACGL_CHECK_CRITICAL_GL_ERRORS
# define openGLCriticalError() openGLError_( __FILE__, __LINE__ )
# define openGLCriticalErrorOccured() (openGLError_( __FILE__, __LINE__ ) != GL_NO_ERROR)
#else
inline GLenum openGLCriticalError() { return GL_NO_ERROR; }
inline bool openGLCriticalErrorOccured() { return false; }
#endif
#ifdef ACGL_CHECK_COMMON_GL_ERRORS
# define openGLCommonError() openGLError_( __FILE__, __LINE__ )
# define openGLCommonErrorOccured() (openGLError_( __FILE__, __LINE__ ) != GL_NO_ERROR)
#else
inline GLenum openGLCommonError() { return GL_NO_ERROR; }
inline bool openGLCommonErrorOccured() { return false; }
#endif
#ifdef ACGL_CHECK_RARE_GL_ERRORS
# define openGLRareError() openGLError_( __FILE__, __LINE__ )
# define openGLRareErrorOccured() (openGLError_( __FILE__, __LINE__ ) != GL_NO_ERROR)
#else
inline GLenum openGLRareError() { return GL_NO_ERROR; }
inline bool openGLRareErrorOccured() { return false; }
#endif
} // Tools
} // GLUtils
} // ACGL
#endif // ACGL_GLUTILS_TOOLS_HH
This diff is collapsed.
......@@ -3,88 +3,88 @@
// All rights reserved. //
////////////////////////////////////////////////////////////////////////////////
#ifndef ACGL_RESOURCE_ARRAYBUFFERCONTROL_HH
#define ACGL_RESOURCE_ARRAYBUFFERCONTROL_HH
#include <ACGL/Resource/BasicController.hh>
#include <ACGL/Resource/ResourceTypes.hh>
#include <ACGL/Resource/ArrayBuffer.hh>
#include <ACGL/GL.hh>
namespace ACGL{
namespace Resource{
class ArrayBufferControl : public BasicController<ArrayBuffer>
{
// ==================================================================================================== \/
// ============================================================================================ STRUCTS \/
// ==================================================================================================== \/
public:
struct AttributeDefine
{
std::string name;
GLenum type;
GLint dimension;
};
// ===================================================================================================== \/
// ============================================================================================ TYPEDEFS \/
// ===================================================================================================== \/
public:
typedef std::vector< AttributeDefine > AttributeDefineVec;
// ========================================================================================================= \/
// ============================================================================================ CONSTRUCTORS \/
// ========================================================================================================= \/
public:
ArrayBufferControl(void)
: mUsage(GL_STATIC_DRAW),
mMode(GL_TRIANGLES),
mElements(0),
mpData(NULL),
mAttributeDefines()
{}
virtual ~ArrayBufferControl() {}
// ==================================================================================================== \/
// ============================================================================================ METHODS \/
// ==================================================================================================== \/
public:
inline ArrayBufferControl& usage (GLenum _usage) { mUsage = _usage; return *this; }
inline ArrayBufferControl& mode (GLenum _mode) { mMode = _mode; return *this; }
inline ArrayBufferControl& data (const GLvoid* _pData, GLsizei _elements)
{
mpData = _pData;
mElements = _elements;
return *this;
}
inline ArrayBufferControl& attribute (const std::string& _name, GLenum _type, GLint _dimension)
{
AttributeDefine a = {_name, _type, _dimension};
mAttributeDefines.push_back(a);
return *this;
}
// ===================================================================================================== \/
// ============================================================================================ OVERRIDE \/
// ===================================================================================================== \/
public:
virtual SharedArrayBuffer create(void);
// =================================================================================================== \/
// ============================================================================================ FIELDS \/
// =================================================================================================== \/
protected:
GLenum mUsage;
GLenum mMode;
GLsizei mElements;
const GLvoid* mpData;
AttributeDefineVec mAttributeDefines;
};
} // Resource
} // ACGL
#endif // ACGL_RESOURCE_TEXTURE_HH
#ifndef ACGL_RESOURCE_ARRAYBUFFERCONTROL_HH
#define ACGL_RESOURCE_ARRAYBUFFERCONTROL_HH
#include <ACGL/Resource/BasicController.hh>
#include <ACGL/Resource/ResourceTypes.hh>
#include <ACGL/Resource/ArrayBuffer.hh>
#include <ACGL/GL.hh>
namespace ACGL{
namespace Resource{
class ArrayBufferControl : public BasicController<ArrayBuffer>
{
// ==================================================================================================== \/
// ============================================================================================ STRUCTS \/
// ==================================================================================================== \/
public:
struct AttributeDefine
{
std::string name;
GLenum type;
GLint dimension;
};
// ===================================================================================================== \/
// ============================================================================================ TYPEDEFS \/
// ===================================================================================================== \/
public:
typedef std::vector< AttributeDefine > AttributeDefineVec;
// ========================================================================================================= \/
// ============================================================================================ CONSTRUCTORS \/
// ========================================================================================================= \/
public:
ArrayBufferControl(void)
: mUsage(GL_STATIC_DRAW),
mMode(GL_TRIANGLES),
mElements(0),
mpData(NULL),
mAttributeDefines()
{}
virtual ~ArrayBufferControl() {}
// ==================================================================================================== \/
// ============================================================================================ METHODS \/
// ==================================================================================================== \/
public:
inline ArrayBufferControl& usage (GLenum _usage) { mUsage = _usage; return *this; }
inline ArrayBufferControl& mode (GLenum _mode) { mMode = _mode; return *this; }
inline ArrayBufferControl& data (const GLvoid* _pData, GLsizei _elements)
{
mpData = _pData;
mElements = _elements;
return *this;
}
inline ArrayBufferControl& attribute (const std::string& _name, GLenum _type, GLint _dimension)
{
AttributeDefine a = {_name, _type, _dimension};
mAttributeDefines.push_back(a);
return *this;
}
// ===================================================================================================== \/
// ============================================================================================ OVERRIDE \/
// ===================================================================================================== \/
public:
virtual SharedArrayBuffer create(void);
// =================================================================================================== \/
// ============================================================================================ FIELDS \/
// =================================================================================================== \/
protected:
GLenum mUsage;
GLenum mMode;
GLsizei mElements;
const GLvoid* mpData;
AttributeDefineVec mAttributeDefines;
};
} // Resource
} // ACGL
#endif // ACGL_RESOURCE_TEXTURE_HH
......@@ -3,117 +3,117 @@
// All rights reserved. //
////////////////////////////////////////////////////////////////////////////////
#ifndef ACGL_RESOURCE_ELEMENTBUFFERDATA_HH
#define ACGL_RESOURCE_ELEMENTBUFFERDATA_HH
#include <ACGL/GLUtils/Tools.hh>
#include <ACGL/GL.hh>
namespace ACGL{
namespace Resource{
class ElementArrayBuffer
{
// ========================================================================================================= \/
// ============================================================================================ CONSTRUCTORS \/
// ========================================================================================================= \/
public:
ElementArrayBuffer(
GLenum _usage = GL_STATIC_DRAW,
GLenum _mode = GL_TRIANGLES,
GLenum _type = GL_UNSIGNED_INT)
: mContext(0),
mUsage(_usage),
mMode(_mode),
mElements(0),
mType(_type),
mSizeOfType(GLUtils::Tools::getGLTypeSize(_type))
{
glGenBuffers(1, &mContext);
}
virtual ~ElementArrayBuffer(void)
{
if(mContext != 0)
glDeleteBuffers(1, &mContext);
}
// ==================================================================================================== \/
// ============================================================================================ GETTERS \/
// ==================================================================================================== \/
public:
inline GLuint getContext (void) const { return mContext; }
inline GLenum getUsage (void) const { return mUsage; }
inline GLenum getMode (void) const { return mMode; }
inline GLsizei getElements (void) const { return mElements; }
inline GLenum getType (void) const { return mType; }
inline GLint getSizeOfType (void) const { return mSizeOfType; }
// ==================================================================================================== \/
// ============================================================================================ SETTERS \/
// ==================================================================================================== \/
public:
inline void setUsage (GLenum _usage) { mUsage = _usage; }
inline void setMode (GLenum _mode) { mMode = _mode; }
inline void setType (GLenum _type)
{
mType = _type;
mSizeOfType = GLUtils::Tools::getGLTypeSize(mType);
}
// ===================================================================================================== \/
// ============================================================================================ WRAPPERS \/
// ===================================================================================================== \/
public:
//! Bind this buffer
inline void bind(void) const
{
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, mContext);
}
void draw(void) const
{
glDrawElements(mMode, mElements, mType, (GLvoid*)0);
}
//! Set data for this buffer
inline void setData(
const GLvoid* _pData)
{
glBufferData(
GL_ELEMENT_ARRAY_BUFFER,
mElements * mSizeOfType,
_pData,
mUsage);
}
//! Set data for this buffer
inline void setData(
const GLvoid* _pData,
GLsizei _elements)
{
mElements = _elements;
glBufferData(
GL_ELEMENT_ARRAY_BUFFER,
mElements * mSizeOfType,
_pData,
mUsage);
}
// =================================================================================================== \/
// ============================================================================================ FIELDS \/
// =================================================================================================== \/
protected:
GLuint mContext;
GLenum mUsage;
GLenum mMode;
GLsizei mElements;
GLenum mType;
GLint mSizeOfType;
};
} // Resource
} // ACGL
#endif // ACGL_RESOURCE_ELEMENTBUFFERDATA_HH
#ifndef ACGL_RESOURCE_ELEMENTBUFFERDATA_HH
#define ACGL_RESOURCE_ELEMENTBUFFERDATA_HH
#include <ACGL/GLUtils/Tools.hh>
#include <ACGL/GL.hh>
namespace ACGL{
namespace Resource{
class ElementArrayBuffer
{
// ========================================================================================================= \/
// ============================================================================================ CONSTRUCTORS \/
// ========================================================================================================= \/
public:
ElementArrayBuffer(
GLenum _usage = GL_STATIC_DRAW,
GLenum _mode = GL_TRIANGLES,
GLenum _type = GL_UNSIGNED_INT)
: mContext(0),
mUsage(_usage),
mMode(_mode),
mElements(0),
mType(_type),
mSizeOfType(GLUtils::Tools::getGLTypeSize(_type))
{