/*!****************************************************************************
@file OGLES3/PVRTgles3Ext.h
@ingroup API_OGLES3
@copyright Copyright (c) Imagination Technologies Limited.
@brief OpenGL ES 3.0 extensions
******************************************************************************/
#ifndef _PVRTgles3Ext_H_
#define _PVRTgles3Ext_H_
/*!
@addtogroup API_OGLES3
@{
*/
#if defined(TARGET_OS_IPHONE) && TARGET_OS_IPHONE==1
#import <OpenGLES/ES3/gl.h>
#import <OpenGLES/ES3/glext.h>
// No binary shaders are allowed on the iphone and so this value is not defined
// Defining here allows for a more graceful fail of binary shader loading at runtime
// which can be recovered from instead of fail at compile time
#define GL_SGX_BINARY_IMG 0
#else
#ifdef BUILD_OGLES31
#include <GLES3/gl31.h>
#else
#include <GLES3/gl3.h>
#endif
#endif
#if !defined(EGL_NOT_PRESENT)
#define PVRGetProcAddress(x) eglGetProcAddress(#x)
#endif
/****************************************************************************
** Build options
****************************************************************************/
#define GL_PVRTGLESEXT_VERSION 3
/**************************************************************************
****************************** GL EXTENSIONS ******************************
**************************************************************************/
/*!**************************************************************************
@class CPVRTgles3Ext
@brief A class for initialising and managing OGLES3 extensions
****************************************************************************/
class CPVRTgles3Ext
{
public:
// typedef definition for pointers to functions returned by eglGetProcAddress
typedef void (GL_APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEEXT)(GLenum, GLsizei, GLenum, GLsizei, GLsizei);
typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTURE2DMULTISAMPLEEXT)(GLenum, GLenum, GLenum, GLuint,GLint, GLsizei);
typedef void (GL_APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEIMG)(GLenum, GLsizei, GLenum, GLsizei, GLsizei);
typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTURE2DMULTISAMPLEIMG)(GLenum, GLenum, GLenum, GLuint,GLint, GLsizei);
// GL_IMG_multisampled_render_to_texture
#if !defined(GL_IMG_multisampled_render_to_texture)
#define GL_RENDERBUFFER_SAMPLES_IMG 0x9133
#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_IMG 0x9134
#define GL_MAX_SAMPLES_IMG 0x9135
#define GL_TEXTURE_SAMPLES_IMG 0x9136
#endif
// GL_EXT_multisampled_render_to_texture
#if !defined(GL_EXT_multisampled_render_to_texture)
#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_SAMPLES_EXT 0x8D6C
#define GL_RENDERBUFFER_SAMPLES_EXT 0x8CAB
#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_EXT 0x8D56
#define GL_MAX_SAMPLES_EXT 0x8D57
#endif
PFNGLRENDERBUFFERSTORAGEMULTISAMPLEEXT glRenderbufferStorageMultisampleEXT;
PFNGLRENDERBUFFERSTORAGEMULTISAMPLEIMG glRenderbufferStorageMultisampleIMG;
PFNGLFRAMEBUFFERTEXTURE2DMULTISAMPLEEXT glFramebufferTexture2DMultisampleEXT;
PFNGLFRAMEBUFFERTEXTURE2DMULTISAMPLEIMG glFramebufferTexture2DMultisampleIMG;
/*!***********************************************************************
@brief Initialises IMG extensions
*************************************************************************/
void LoadExtensions();
/*!***********************************************************************
@brief Queries for support of an extension
@param[in] extension Extension to query for
@return True if the extension is supported
*************************************************************************/
static bool IsGLExtensionSupported(const char * const extension);
};
/*! @} */
#endif /* _PVRTgles3Ext_H_ */
/*****************************************************************************
End of file (PVRTgles3Ext.h)
*****************************************************************************/