Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <type_traits>
- #include <GL/glew.h>
- #include <GL/gl.h>
- void __glPrintError(const char *file, const int line) {
- auto error = glGetError();
- if (error != GL_NO_ERROR) {
- std::cerr << "GL: "
- << gluErrorString(error)
- << std::endl
- << "\tat "
- << file
- << ":"
- << line
- << std::endl;
- }
- }
- template<typename Function, typename ... Args>
- auto __glFunction(const char *file, const int line, Function f, Args ...args) ->
- typename std::enable_if<!std::is_void<decltype(f(args...))>::value, decltype(f(args...))>::type {
- auto result = f(args...);
- __glPrintError(file, line);
- return result;
- };
- template<typename Function, typename ... Args>
- auto __glFunction(const char *file, const int line, Function f, Args ...args) ->
- typename std::enable_if<std::is_void<decltype(f(args...))>::value, void>::type {
- f(args...);
- __glPrintError(file, line);
- };
- #define gl(function, ...) __glFunction(__FILE__, __LINE__, function, ##__VA_ARGS__)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement