29 #ifndef __GLES2Prerequisites_H__
30 #define __GLES2Prerequisites_H__
36 #if (OGRE_PLATFORM == OGRE_PLATFORM_WIN32)
37 # if !defined( __MINGW32__ )
38 # define __PRETTY_FUNCTION__ __FUNCTION__
39 # ifndef WIN32_LEAN_AND_MEAN
40 # define WIN32_LEAN_AND_MEAN 1
43 # define NOMINMAX // required to stop windows.h messing up std::min
48 #ifndef GL_GLEXT_PROTOTYPES
49 # define GL_GLEXT_PROTOTYPES
52 #if (OGRE_PLATFORM == OGRE_PLATFORM_APPLE_IOS)
53 # include <OpenGLES/ES2/gl.h>
54 # include <OpenGLES/ES2/glext.h>
56 # include <OpenGLES/EAGL.h>
58 #elif (OGRE_PLATFORM == OGRE_PLATFORM_ANDROID) || (OGRE_PLATFORM == OGRE_PLATFORM_NACL)
59 # ifndef GL_GLEXT_PROTOTYPES
60 # define GL_GLEXT_PROTOTYPES
62 # include <GLES2/gl2platform.h>
63 # include <GLES2/gl2.h>
64 # include <GLES2/gl2ext.h>
65 # if (OGRE_PLATFORM == OGRE_PLATFORM_NACL)
66 # include "ppapi/cpp/completion_callback.h"
67 # include "ppapi/cpp/instance.h"
68 # include "ppapi/c/ppp_graphics_3d.h"
69 # include "ppapi/cpp/graphics_3d.h"
70 # include "ppapi/cpp/graphics_3d_client.h"
71 # include "ppapi/gles2/gl2ext_ppapi.h"
72 # undef GL_OES_get_program_binary
73 # undef GL_OES_mapbuffer
76 # include <GLES2/gl2.h>
77 # include <GLES2/gl2ext.h>
83 # ifndef GL_GLEXT_PROTOTYPES
84 extern PFNGLMAPBUFFEROESPROC glMapBufferOES;
85 extern PFNGLUNMAPBUFFEROESPROC glUnmapBufferOES;
86 extern PFNGLDRAWBUFFERSARBPROC glDrawBuffersARB;
87 extern PFNGLREADBUFFERNVPROC glReadBufferNV;
88 extern PFNGLGETCOMPRESSEDTEXIMAGENVPROC glGetCompressedTexImageNV;
89 extern PFNGLGETTEXIMAGENVPROC glGetTexImageNV;
90 extern PFNGLGETTEXLEVELPARAMETERFVNVPROC glGetTexLevelParameterfvNV;
91 extern PFNGLGETTEXLEVELPARAMETERiVNVPROC glGetTexLevelParameterivNV;
96 #if (OGRE_NO_PVRTC_CODEC == 0)
97 # ifndef GL_IMG_texture_compression_pvrtc
98 # define GL_IMG_texture_compression_pvrtc 1
99 # define GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG 0x8C00
100 # define GL_COMPRESSED_RGB_PVRTC_2BPPV1_IMG 0x8C01
101 # define GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG 0x8C02
102 # define GL_COMPRESSED_RGBA_PVRTC_2BPPV1_IMG 0x8C03
112 #if !defined(GL_BGRA) && OGRE_PLATFORM != OGRE_PLATFORM_NACL
113 # define GL_BGRA 0x80E1
116 #if (OGRE_PLATFORM == OGRE_PLATFORM_WIN32)
118 # undef GL_OES_get_program_binary
121 #if (OGRE_PLATFORM == OGRE_PLATFORM_WIN32) && !defined(__MINGW32__) && !defined(OGRE_STATIC_LIB)
122 # ifdef OGRE_GLES2PLUGIN_EXPORTS
123 # define _OgreGLES2Export __declspec(dllexport)
125 # if defined( __MINGW32__ )
126 # define _OgreGLES2Export
128 # define _OgreGLES2Export __declspec(dllimport)
131 #elif defined ( OGRE_GCC_VISIBILITY )
132 # define _OgreGLES2Export __attribute__ ((visibility("default")))
134 # define _OgreGLES2Export
137 #define DEBUG_(text) \
139 fprintf(stderr, "%s:%d: %s\n", __FUNCTION__, __LINE__, text); \
142 #define ENABLE_GL_CHECK 0
145 #define GL_CHECK_ERROR \
147 int e = glGetError(); \
150 const char * errorString = ""; \
153 case GL_INVALID_ENUM: errorString = "GL_INVALID_ENUM"; break; \
154 case GL_INVALID_VALUE: errorString = "GL_INVALID_VALUE"; break; \
155 case GL_INVALID_OPERATION: errorString = "GL_INVALID_OPERATION"; break; \
156 case GL_OUT_OF_MEMORY: errorString = "GL_OUT_OF_MEMORY"; break; \
159 char msgBuf[10000]; \
160 sprintf(msgBuf, "OpenGL ES2 error 0x%04X %s in %s at line %i\n", e, errorString, __PRETTY_FUNCTION__, __LINE__); \
161 LogManager::getSingleton().logMessage(msgBuf); \
165 #define GL_CHECK_ERROR {}
169 #define EGL_CHECK_ERROR \
171 int e = eglGetError(); \
172 if ((e != 0) && (e != EGL_SUCCESS))\
174 char msgBuf[10000]; \
175 sprintf(msgBuf, "EGL error 0x%04X in %s at line %i\n", e, __PRETTY_FUNCTION__, __LINE__); \
176 LogManager::getSingleton().logMessage(msgBuf); \
177 OGRE_EXCEPT(Exception::ERR_INTERNAL_ERROR, msgBuf, __PRETTY_FUNCTION__); \
181 #define EGL_CHECK_ERROR {}