diff options
Diffstat (limited to 'xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/gl/GL.h')
| -rw-r--r-- | xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/gl/GL.h | 111 |
1 files changed, 111 insertions, 0 deletions
diff --git a/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/gl/GL.h b/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/gl/GL.h new file mode 100644 index 0000000..943c7d0 --- /dev/null +++ b/xbmc/addons/kodi-addon-dev-kit/include/kodi/gui/gl/GL.h | |||
| @@ -0,0 +1,111 @@ | |||
| 1 | /* | ||
| 2 | * Copyright (C) 2005-2019 Team Kodi | ||
| 3 | * This file is part of Kodi - https://kodi.tv | ||
| 4 | * | ||
| 5 | * SPDX-License-Identifier: GPL-2.0-or-later | ||
| 6 | * See LICENSES/README.md for more information. | ||
| 7 | */ | ||
| 8 | |||
| 9 | #pragma once | ||
| 10 | |||
| 11 | //============================================================================== | ||
| 12 | /// | ||
| 13 | /// \defgroup cpp_kodi_gui_gl OpenGL helpers | ||
| 14 | /// \ingroup cpp_kodi_gui | ||
| 15 | /// \brief Auxiliary functions for Open GL | ||
| 16 | /// | ||
| 17 | /// This group includes help for definitions, functions, and classes for | ||
| 18 | /// OpenGL. | ||
| 19 | /// | ||
| 20 | /// To use OpenGL for your system, add the \ref GL.h "#include <kodi/gui/gl/GL.h>". | ||
| 21 | /// | ||
| 22 | /// | ||
| 23 | ///----------------------------------------------------------------------------- | ||
| 24 | /// | ||
| 25 | /// The \ref HAS_GL is declared if Open GL is required and \ref HAS_GLES if Open GL | ||
| 26 | /// Embedded Systems (ES) is required, with ES the version is additionally given | ||
| 27 | /// in the definition, this can be "2" or "3". | ||
| 28 | /// | ||
| 29 | /// | ||
| 30 | ///----------------------------------------------------------------------------- | ||
| 31 | /// | ||
| 32 | /// Following \ref GL_TYPE_STRING define can be used, for example, to manage | ||
| 33 | /// different folders for GL and GLES and make the selection easier. | ||
| 34 | /// This are on OpenGL <b>"GL"</b> and on Open GL|ES <b>"GLES"</b>. | ||
| 35 | /// | ||
| 36 | /// **Example:** | ||
| 37 | /// ~~~~~~~~~~~~~~~~~{.cpp} | ||
| 38 | /// kodi::GetAddonPath("resources/shaders/" GL_TYPE_STRING "/frag.glsl"); | ||
| 39 | /// ~~~~~~~~~~~~~~~~~ | ||
| 40 | /// | ||
| 41 | /// | ||
| 42 | ///---------------------------------------------------------------------------- | ||
| 43 | /// | ||
| 44 | /// In addition, \ref BUFFER_OFFSET is declared in it which can be used to give an | ||
| 45 | /// offset on the array to GL. | ||
| 46 | /// | ||
| 47 | /// **Example:** | ||
| 48 | /// ~~~~~~~~~~~~~~~~~{.cpp} | ||
| 49 | /// const struct PackedVertex { | ||
| 50 | /// float position[3]; // Position x, y, z | ||
| 51 | /// float color[4]; // Color r, g, b, a | ||
| 52 | /// } vertices[3] = { | ||
| 53 | /// { { -0.5f, -0.5f, 0.0f }, { 1.0f, 0.0f, 0.0f, 1.0f } }, | ||
| 54 | /// { { 0.5f, -0.5f, 0.0f }, { 0.0f, 1.0f, 0.0f, 1.0f } }, | ||
| 55 | /// { { 0.0f, 0.5f, 0.0f }, { 0.0f, 0.0f, 1.0f, 1.0f } } | ||
| 56 | /// }; | ||
| 57 | /// | ||
| 58 | /// glVertexAttribPointer(m_aPosition, 3, GL_FLOAT, GL_FALSE, sizeof(PackedVertex), BUFFER_OFFSET(offsetof(PackedVertex, position))); | ||
| 59 | /// glEnableVertexAttribArray(m_aPosition); | ||
| 60 | /// | ||
| 61 | /// glVertexAttribPointer(m_aColor, 4, GL_FLOAT, GL_FALSE, sizeof(PackedVertex), BUFFER_OFFSET(offsetof(PackedVertex, color))); | ||
| 62 | /// glEnableVertexAttribArray(m_aColor); | ||
| 63 | /// ~~~~~~~~~~~~~~~~~ | ||
| 64 | |||
| 65 | #if HAS_GL | ||
| 66 | #define GL_TYPE_STRING "GL" | ||
| 67 | // always define GL_GLEXT_PROTOTYPES before include gl headers | ||
| 68 | #if !defined(GL_GLEXT_PROTOTYPES) | ||
| 69 | #define GL_GLEXT_PROTOTYPES | ||
| 70 | #endif | ||
| 71 | #if defined(TARGET_LINUX) | ||
| 72 | #include <GL/gl.h> | ||
| 73 | #include <GL/glext.h> | ||
| 74 | #elif defined(TARGET_FREEBSD) | ||
| 75 | #include <GL/gl.h> | ||
| 76 | #elif defined(TARGET_DARWIN) | ||
| 77 | #include <OpenGL/gl3.h> | ||
| 78 | #include <OpenGL/gl3ext.h> | ||
| 79 | #elif defined(WIN32) | ||
| 80 | #error Use of GL under Windows is not possible | ||
| 81 | #endif | ||
| 82 | #elif HAS_GLES >= 2 | ||
| 83 | #define GL_TYPE_STRING "GLES" | ||
| 84 | #if defined(WIN32) | ||
| 85 | #if defined(HAS_ANGLE) | ||
| 86 | #include <angle_gl.h> | ||
| 87 | #else | ||
| 88 | #error Use of GLES only be available under Windows by the use of angle | ||
| 89 | #endif | ||
| 90 | #elif defined(TARGET_DARWIN) | ||
| 91 | #if HAS_GLES == 3 | ||
| 92 | #include <OpenGLES/ES3/gl.h> | ||
| 93 | #include <OpenGLES/ES3/glext.h> | ||
| 94 | #else | ||
| 95 | #include <OpenGLES/ES2/gl.h> | ||
| 96 | #include <OpenGLES/ES2/glext.h> | ||
| 97 | #endif | ||
| 98 | #else | ||
| 99 | #if HAS_GLES == 3 | ||
| 100 | #include <GLES3/gl3.h> | ||
| 101 | #include <GLES3/gl3ext.h> | ||
| 102 | #else | ||
| 103 | #include <GLES2/gl2.h> | ||
| 104 | #include <GLES2/gl2ext.h> | ||
| 105 | #endif | ||
| 106 | #endif | ||
| 107 | #endif | ||
| 108 | |||
| 109 | #ifndef BUFFER_OFFSET | ||
| 110 | #define BUFFER_OFFSET(i) ((char *)nullptr + (i)) | ||
| 111 | #endif | ||
