1 /*!**************************************************************************** 2 3 @file OGLES3/PVRTgles3Ext.h 4 @ingroup API_OGLES3 5 @copyright Copyright (c) Imagination Technologies Limited. 6 @brief OpenGL ES 3.0 extensions 7 8 ******************************************************************************/ 9 #ifndef _PVRTgles3Ext_H_ 10 #define _PVRTgles3Ext_H_ 11 12 /*! 13 @addtogroup API_OGLES3 14 @{ 15 */ 16 17 #if defined(TARGET_OS_IPHONE) && TARGET_OS_IPHONE==1 18 #import <OpenGLES/ES3/gl.h> 19 #import <OpenGLES/ES3/glext.h> 20 // No binary shaders are allowed on the iphone and so this value is not defined 21 // Defining here allows for a more graceful fail of binary shader loading at runtime 22 // which can be recovered from instead of fail at compile time 23 #define GL_SGX_BINARY_IMG 0 24 #else 25 #ifdef BUILD_OGLES31 26 #include <GLES3/gl31.h> 27 #else 28 #include <GLES3/gl3.h> 29 #endif 30 #endif 31 32 #if !defined(EGL_NOT_PRESENT) 33 #define PVRGetProcAddress(x) eglGetProcAddress(#x) 34 #endif 35 36 /**************************************************************************** 37 ** Build options 38 ****************************************************************************/ 39 40 #define GL_PVRTGLESEXT_VERSION 3 41 42 /************************************************************************** 43 ****************************** GL EXTENSIONS ****************************** 44 **************************************************************************/ 45 46 /*!************************************************************************** 47 @class CPVRTgles3Ext 48 @brief A class for initialising and managing OGLES3 extensions 49 ****************************************************************************/ 50 class CPVRTgles3Ext 51 { 52 public: 53 // typedef definition for pointers to functions returned by eglGetProcAddress 54 typedef void (GL_APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEEXT)(GLenum, GLsizei, GLenum, GLsizei, GLsizei); 55 typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTURE2DMULTISAMPLEEXT)(GLenum, GLenum, GLenum, GLuint,GLint, GLsizei); 56 57 typedef void (GL_APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEIMG)(GLenum, GLsizei, GLenum, GLsizei, GLsizei); 58 typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTURE2DMULTISAMPLEIMG)(GLenum, GLenum, GLenum, GLuint,GLint, GLsizei); 59 60 // GL_IMG_multisampled_render_to_texture 61 #if !defined(GL_IMG_multisampled_render_to_texture) 62 #define GL_RENDERBUFFER_SAMPLES_IMG 0x9133 63 #define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_IMG 0x9134 64 #define GL_MAX_SAMPLES_IMG 0x9135 65 #define GL_TEXTURE_SAMPLES_IMG 0x9136 66 #endif 67 68 // GL_EXT_multisampled_render_to_texture 69 #if !defined(GL_EXT_multisampled_render_to_texture) 70 #define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_SAMPLES_EXT 0x8D6C 71 #define GL_RENDERBUFFER_SAMPLES_EXT 0x8CAB 72 #define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_EXT 0x8D56 73 #define GL_MAX_SAMPLES_EXT 0x8D57 74 #endif 75 76 PFNGLRENDERBUFFERSTORAGEMULTISAMPLEEXT glRenderbufferStorageMultisampleEXT; 77 PFNGLRENDERBUFFERSTORAGEMULTISAMPLEIMG glRenderbufferStorageMultisampleIMG; 78 PFNGLFRAMEBUFFERTEXTURE2DMULTISAMPLEEXT glFramebufferTexture2DMultisampleEXT; 79 PFNGLFRAMEBUFFERTEXTURE2DMULTISAMPLEIMG glFramebufferTexture2DMultisampleIMG; 80 81 /*!*********************************************************************** 82 @brief Initialises IMG extensions 83 *************************************************************************/ 84 void LoadExtensions(); 85 86 /*!*********************************************************************** 87 @brief Queries for support of an extension 88 @param[in] extension Extension to query for 89 @return True if the extension is supported 90 *************************************************************************/ 91 static bool IsGLExtensionSupported(const char * const extension); 92 }; 93 94 /*! @} */ 95 96 #endif /* _PVRTgles3Ext_H_ */ 97 98 /***************************************************************************** 99 End of file (PVRTgles3Ext.h) 100 *****************************************************************************/ 101 102