// // OpenGL.h // Clock Signal // // Created by Thomas Harte on 07/02/2016. // Copyright 2016 Thomas Harte. All rights reserved. // #pragma once #include #include // TODO: figure out correct include paths for other platforms. #ifdef __APPLE__ #include #if TARGET_OS_IPHONE #else // These remain so that I can, at least for now, build the kiosk version under macOS. // They can be eliminated if and when Apple fully withdraws OpenGL support. #include #include #include #endif #else #define GL_GLEXT_PROTOTYPES #include #include #endif #ifndef NDEBUG inline void test_gl_error() { const auto error = glGetError(); if(error) { switch(error) { default: std::cerr << "Error " << error; break; case GL_INVALID_ENUM: std::cerr << "GL_INVALID_ENUM"; break; case GL_INVALID_VALUE: std::cerr << "GL_INVALID_VALUE"; break; case GL_INVALID_OPERATION: std::cerr << "GL_INVALID_OPERATION"; break; case GL_INVALID_FRAMEBUFFER_OPERATION: std::cerr << "GL_INVALID_FRAMEBUFFER_OPERATION"; break; case GL_OUT_OF_MEMORY: std::cerr << "GL_OUT_OF_MEMORY"; break; }; std::cerr << " at line " << __LINE__ << " in " << __FILE__ << std::endl; \ assert(false); } } #else inline void test_gl_error() {} #endif #ifndef NDEBUG template inline void test_gl(const Func &&perform) { perform(); test_gl_error(); } #else template inline void test_gl(const Func &&perform) { perform(); } #endif