diff options
Diffstat (limited to 'include/mbgl/platform/gl.hpp')
-rw-r--r-- | include/mbgl/platform/gl.hpp | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/include/mbgl/platform/gl.hpp b/include/mbgl/platform/gl.hpp new file mode 100644 index 0000000000..a29b230dbf --- /dev/null +++ b/include/mbgl/platform/gl.hpp @@ -0,0 +1,83 @@ +#ifndef MBGL_RENDERER_GL +#define MBGL_RENDERER_GL + +#include <string> + +#ifdef NVIDIA + #include <GLES2/gl2.h> + #include <GLES2/gl2ext.h> + + extern PFNGLDISCARDFRAMEBUFFEREXTPROC glDiscardFramebufferEXT; + + #define GL_DEPTH24_STENCIL8 GL_DEPTH24_STENCIL8_OES +#elif __APPLE__ + #include "TargetConditionals.h" + #if TARGET_OS_IPHONE + #include <OpenGLES/ES2/gl.h> + #include <OpenGLES/ES2/glext.h> + #define glGenVertexArrays glGenVertexArraysOES + #define glBindVertexArray glBindVertexArrayOES + #define glDeleteVertexArrays glDeleteVertexArraysOES + #define GL_ARB_vertex_array_object 1 + #define GL_DEPTH24_STENCIL8 GL_DEPTH24_STENCIL8_OES + #elif TARGET_IPHONE_SIMULATOR + #include <OpenGLES/ES2/gl.h> + #include <OpenGLES/ES2/glext.h> + #elif TARGET_OS_MAC + #include <OpenGL/OpenGL.h> + #include <OpenGL/gl.h> + #define glGenVertexArrays glGenVertexArraysAPPLE + #define glBindVertexArray glBindVertexArrayAPPLE + #define glDeleteVertexArrays glDeleteVertexArraysAPPLE + #else + #error Unsupported Apple platform + #endif +#else + #define GL_GLEXT_PROTOTYPES + #include <GL/gl.h> + #include <GL/glu.h> + #include <GL/glext.h> +#endif + +namespace mbgl { +namespace gl { +// Debug group markers, useful for debuggin on iOS +#if defined(__APPLE__) && defined(DEBUG) && defined(GL_EXT_debug_marker) +// static int indent = 0; +inline void start_group(const std::string &str) { + glPushGroupMarkerEXT(0, str.c_str()); + // fprintf(stderr, "%s%s\n", std::string(indent * 4, ' ').c_str(), str.c_str()); + // indent++; +} + +inline void end_group() { + glPopGroupMarkerEXT(); + // indent--; +} +#else +inline void start_group(const std::string &) {} +inline void end_group() {} +#endif + + +struct group { + inline group(const std::string &str) { start_group(str); } + ~group() { end_group(); }; +}; +} +} + +#ifdef GL_ES_VERSION_2_0 + #define glClearDepth glClearDepthf + #define glDepthRange glDepthRangef +#endif + +void _CHECK_GL_ERROR(const char *cmd, const char *file, int line); + +#define _CHECK_ERROR(cmd, file, line) \ + cmd; \ + do { _CHECK_GL_ERROR(#cmd, file, line); } while (false); + +#define CHECK_ERROR(cmd) _CHECK_ERROR(cmd, __FILE__, __LINE__) + +#endif |