]> git.sesse.net Git - casparcg/blob - common/gl/gl_check.h
4750309b76343cbb15e263bb1b29032785dc66b9
[casparcg] / common / gl / gl_check.h
1 ////////////////////////////////////////////////////////////\r
2 //\r
3 // SFML - Simple and Fast Multimedia Library\r
4 // Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)\r
5 //\r
6 // This software is provided 'as-is', without any express or implied warranty.\r
7 // In no event will the authors be held liable for any damages arising from the use of this software.\r
8 //\r
9 // Permission is granted to anyone to use this software for any purpose,\r
10 // including commercial applications, and to alter it and redistribute it freely,\r
11 // subject to the following restrictions:\r
12 //\r
13 // 1. The origin of this software must not be misrepresented;\r
14 //    you must not claim that you wrote the original software.\r
15 //    If you use this software in a product, an acknowledgment\r
16 //    in the product documentation would be appreciated but is not required.\r
17 //\r
18 // 2. Altered source versions must be plainly marked as such,\r
19 //    and must not be misrepresented as being the original software.\r
20 //\r
21 // 3. This notice may not be removed or altered from any source distribution.\r
22 //\r
23 ////////////////////////////////////////////////////////////\r
24 \r
25 #pragma once\r
26 \r
27 #include "../exception/exceptions.h"\r
28 \r
29 namespace caspar { namespace gl {\r
30 \r
31 struct ogl_exception                                                    : virtual caspar_exception{};\r
32 struct ogl_invalid_enum                                                 : virtual ogl_exception{};\r
33 struct ogl_invalid_value                                                : virtual ogl_exception{};\r
34 struct ogl_invalid_operation                                    : virtual ogl_exception{};\r
35 struct ogl_stack_overflow                                               : virtual ogl_exception{};\r
36 struct ogl_stack_underflow                                              : virtual ogl_exception{};                      \r
37 struct ogl_out_of_memory                                                : virtual ogl_exception{};\r
38 struct ogl_invalid_framebuffer_operation_ext    : virtual ogl_exception{};\r
39 \r
40 void SMFL_GLCheckError(const std::string& expr, const std::string& File, unsigned int Line);\r
41 \r
42 //#ifdef _DEBUG\r
43         \r
44 #define CASPAR_GL_EXPR_STR(expr) #expr\r
45 \r
46 #define GL(expr) \\r
47         [&] \\r
48         { \\r
49                 (expr);  \\r
50                 caspar::gl::SMFL_GLCheckError(CASPAR_GL_EXPR_STR(expr), __FILE__, __LINE__);\\r
51         }()\r
52 \r
53 #define GL2(expr) \\r
54         [&]() -> decltype(expr)\\r
55         {\\r
56                 auto ret = (expr); \\r
57                 caspar::gl::SMFL_GLCheckError(CASPAR_GL_EXPR_STR(expr), __FILE__, __LINE__);\\r
58                 return ret;\\r
59         }()\r
60 //#else\r
61 //#define GL(expr) expr\r
62 //#endif\r
63 \r
64 }}