]> git.lizzy.rs Git - irrlicht.git/blob - source/Irrlicht/COGLES2ExtensionHandler.h
Reduce IrrCompileConfig usage to files that actually need it
[irrlicht.git] / source / Irrlicht / COGLES2ExtensionHandler.h
1 // Copyright (C) 2015 Patryk Nadrowski\r
2 // Copyright (C) 2009-2010 Amundis\r
3 // This file is part of the "Irrlicht Engine".\r
4 // For conditions of distribution and use, see copyright notice in Irrlicht.h\r
5 \r
6 #ifndef __C_OGLES2_EXTENSION_HANDLER_H_INCLUDED__\r
7 #define __C_OGLES2_EXTENSION_HANDLER_H_INCLUDED__\r
8 \r
9 \r
10 #ifdef _IRR_COMPILE_WITH_OGLES2_\r
11 \r
12 #include "EDriverFeatures.h"\r
13 #include "irrTypes.h"\r
14 #include "os.h"\r
15 \r
16 #include "COGLES2Common.h"\r
17 \r
18 #include "COGLESCoreExtensionHandler.h"\r
19 \r
20 namespace irr\r
21 {\r
22 namespace video\r
23 {\r
24 \r
25         class COGLES2ExtensionHandler : public COGLESCoreExtensionHandler\r
26         {\r
27         public:\r
28                 COGLES2ExtensionHandler() : COGLESCoreExtensionHandler() {}\r
29 \r
30                 void initExtensions();\r
31 \r
32                 bool queryFeature(video::E_VIDEO_DRIVER_FEATURE feature) const\r
33                 {\r
34                         switch (feature)\r
35                         {\r
36                         case EVDF_RENDER_TO_TARGET:\r
37                         case EVDF_HARDWARE_TL:\r
38                         case EVDF_MULTITEXTURE:\r
39                         case EVDF_BILINEAR_FILTER:\r
40                         case EVDF_MIP_MAP:\r
41                         case EVDF_MIP_MAP_AUTO_UPDATE:\r
42                         case EVDF_VERTEX_SHADER_1_1:\r
43                         case EVDF_PIXEL_SHADER_1_1:\r
44                         case EVDF_PIXEL_SHADER_1_2:\r
45                         case EVDF_PIXEL_SHADER_2_0:\r
46                         case EVDF_VERTEX_SHADER_2_0:\r
47                         case EVDF_ARB_GLSL:\r
48                         case EVDF_TEXTURE_NSQUARE:\r
49                         case EVDF_TEXTURE_NPOT:\r
50                         case EVDF_FRAMEBUFFER_OBJECT:\r
51                         case EVDF_VERTEX_BUFFER_OBJECT:\r
52                         case EVDF_COLOR_MASK:\r
53                         case EVDF_ALPHA_TO_COVERAGE:\r
54                         case EVDF_POLYGON_OFFSET:\r
55                         case EVDF_BLEND_OPERATIONS:\r
56                         case EVDF_BLEND_SEPARATE:\r
57                         case EVDF_TEXTURE_MATRIX:\r
58                         case EVDF_TEXTURE_CUBEMAP:\r
59                                 return true;\r
60                         case EVDF_ARB_VERTEX_PROGRAM_1:\r
61                         case EVDF_ARB_FRAGMENT_PROGRAM_1:\r
62                         case EVDF_GEOMETRY_SHADER:\r
63                         case EVDF_MULTIPLE_RENDER_TARGETS:\r
64                         case EVDF_MRT_BLEND:\r
65                         case EVDF_MRT_COLOR_MASK:\r
66                         case EVDF_MRT_BLEND_FUNC:\r
67                         case EVDF_OCCLUSION_QUERY:\r
68                                 return false;\r
69                         case EVDF_TEXTURE_COMPRESSED_DXT:\r
70                                 return false; // NV Tegra need improvements here\r
71                         case EVDF_TEXTURE_COMPRESSED_PVRTC:\r
72                                 return FeatureAvailable[IRR_GL_IMG_texture_compression_pvrtc];\r
73                         case EVDF_TEXTURE_COMPRESSED_PVRTC2:\r
74                                 return FeatureAvailable[IRR_GL_IMG_texture_compression_pvrtc2];\r
75                         case EVDF_TEXTURE_COMPRESSED_ETC1:\r
76                                 return FeatureAvailable[IRR_GL_OES_compressed_ETC1_RGB8_texture];\r
77                         case EVDF_TEXTURE_COMPRESSED_ETC2:\r
78                                 return false;\r
79                         case EVDF_STENCIL_BUFFER:\r
80                                 return StencilBuffer;\r
81                         default:\r
82                                 return false;\r
83                         };\r
84                 }\r
85 \r
86                 inline void irrGlActiveTexture(GLenum texture)\r
87                 {\r
88                         glActiveTexture(texture);\r
89                 }\r
90 \r
91                 inline void irrGlCompressedTexImage2D(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border,\r
92                         GLsizei imageSize, const void* data)\r
93                 {\r
94                         glCompressedTexImage2D(target, level, internalformat, width, height, border, imageSize, data);\r
95                 }\r
96 \r
97                 inline void irrGlCompressedTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height,\r
98                         GLenum format, GLsizei imageSize, const void* data)\r
99                 {\r
100                         glCompressedTexSubImage2D(target, level, xoffset, yoffset, width, height, format, imageSize, data);\r
101                 }\r
102 \r
103                 inline void irrGlUseProgram(GLuint prog)\r
104                 {\r
105                         glUseProgram(prog);\r
106                 }\r
107 \r
108                 inline void irrGlBindFramebuffer(GLenum target, GLuint framebuffer)\r
109                 {\r
110                         glBindFramebuffer(target, framebuffer);\r
111                 }\r
112 \r
113                 inline void irrGlDeleteFramebuffers(GLsizei n, const GLuint *framebuffers)\r
114                 {\r
115                         glDeleteFramebuffers(n, framebuffers);\r
116                 }\r
117 \r
118                 inline void irrGlGenFramebuffers(GLsizei n, GLuint *framebuffers)\r
119                 {\r
120                         glGenFramebuffers(n, framebuffers);\r
121                 }\r
122 \r
123                 inline GLenum irrGlCheckFramebufferStatus(GLenum target)\r
124                 {\r
125                         return glCheckFramebufferStatus(target);\r
126                 }\r
127 \r
128                 inline void irrGlFramebufferTexture2D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level)\r
129                 {\r
130                         glFramebufferTexture2D(target, attachment, textarget, texture, level);\r
131                 }\r
132 \r
133                 inline void irrGlGenerateMipmap(GLenum target)\r
134                 {\r
135                         glGenerateMipmap(target);\r
136                 }\r
137 \r
138                 inline void irrGlActiveStencilFace(GLenum face)\r
139                 {\r
140                 }\r
141 \r
142                 inline void irrGlDrawBuffer(GLenum mode)\r
143                 {\r
144                 }\r
145 \r
146                 inline void irrGlDrawBuffers(GLsizei n, const GLenum *bufs)\r
147                 {\r
148                 }\r
149 \r
150                 inline void irrGlBlendFuncSeparate(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha)\r
151                 {\r
152                         glBlendFuncSeparate(sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha);\r
153                 }\r
154 \r
155                 inline void irrGlBlendEquation(GLenum mode)\r
156                 {\r
157                         glBlendEquation(mode);\r
158                 }\r
159 \r
160                 inline void irrGlEnableIndexed(GLenum target, GLuint index)\r
161                 {\r
162                 }\r
163 \r
164                 inline void irrGlDisableIndexed(GLenum target, GLuint index)\r
165                 {\r
166                 }\r
167 \r
168                 inline void irrGlColorMaskIndexed(GLuint buf, GLboolean r, GLboolean g, GLboolean b, GLboolean a)\r
169                 {\r
170                 }\r
171 \r
172                 inline void irrGlBlendFuncIndexed(GLuint buf, GLenum src, GLenum dst)\r
173                 {\r
174                 }\r
175 \r
176                 inline void irrGlBlendFuncSeparateIndexed(GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha)\r
177                 {\r
178                 }\r
179 \r
180                 inline void irrGlBlendEquationIndexed(GLuint buf, GLenum mode)\r
181                 {\r
182                 }\r
183 \r
184                 inline void irrGlBlendEquationSeparateIndexed(GLuint buf, GLenum modeRGB, GLenum modeAlpha)\r
185                 {\r
186                 }\r
187         };\r
188 \r
189 }\r
190 }\r
191 \r
192 #endif\r
193 #endif\r