// // VROOpenGL.h // ViroRenderer // // Created by Raj Advani on 11/2/16. // Copyright © 2016 Viro Media. All rights reserved. // #ifndef VROOpenGL_h #define VROOpenGL_h #include "VRODefines.h" #include "VROLog.h" #if VRO_PLATFORM_ANDROID #include #include #include #include #include #include #include // Avoiding glBufferSubData seems to increase stability on Adreno devices #define VRO_AVOID_BUFFER_SUB_DATA 1 #elif VRO_PLATFORM_IOS #import #import #import #import #import #import #define VRO_AVOID_BUFFER_SUB_DATA 0 #endif #ifdef CHECK_GL_ERRORS static const char * GlErrorString( GLenum error ) { switch ( error ) { case GL_NO_ERROR: return "GL_NO_ERROR"; case GL_INVALID_ENUM: return "GL_INVALID_ENUM"; case GL_INVALID_VALUE: return "GL_INVALID_VALUE"; case GL_INVALID_OPERATION: return "GL_INVALID_OPERATION"; case GL_INVALID_FRAMEBUFFER_OPERATION: return "GL_INVALID_FRAMEBUFFER_OPERATION"; case GL_OUT_OF_MEMORY: return "GL_OUT_OF_MEMORY"; default: return "unknown"; } } static void GLCheckErrors( int line ) { for ( int i = 0; i < 10; i++ ) { const GLenum error = glGetError(); if ( error == GL_NO_ERROR ) { break; } pinfo( "GL error on line %d: %s", line, GlErrorString( error ) ); } } #define GL( func ) func; GLCheckErrors( __LINE__ ); #else // CHECK_GL_ERRORS #define GL( func ) func; #endif // CHECK_GL_ERRORS #endif /* VROOpenGL_h */