/*!**************************************************************************** @file KEGL/PVRShellAPI.h @ingroup API_KEGL @copyright Copyright (c) Imagination Technologies Limited. @brief 3D API context management for KEGL. @details Makes programming for 3D APIs easier by wrapping surface initialization, Texture allocation and other functions for use by a demo. ******************************************************************************/ #ifndef __PVRSHELLAPI_H_ #define __PVRSHELLAPI_H_ /**************************************************************************** ** 3D API header files ****************************************************************************/ #if defined(BUILD_OGLES2) #include <GLES2/gl2.h> #include <GLES2/gl2ext.h> #include <EGL/egl.h> #include <EGL/eglext.h> #elif defined(BUILD_OGLES3) #include <GLES3/gl3.h> #include <GLES2/gl2ext.h> #include <GLES3/gl3ext.h> #include <EGL/egl.h> #include <EGL/eglext.h> #elif defined(BUILD_OGL) #define SUPPORT_OPENGL #if defined(_WIN32) #include <windows.h> #endif #include <GL/gl.h> #include <EGL/egl.h> #include <EGL/eglext.h> #else #include <EGL/egl.h> #include <EGL/eglext.h> #include <GLES/gl.h> #include <GLES/glext.h> #include <GLES/glplatform.h> #endif /*!*************************************************************************** @addtogroup API_KEGL @brief KEGL API @{ ****************************************************************************/ /*!*************************************************************************** @class PVRShellInitAPI @brief Initialisation interface with specific API. ****************************************************************************/ class PVRShellInitAPI { public: EGLDisplay m_EGLDisplay; EGLSurface m_EGLWindow; EGLContext m_EGLContext; EGLConfig m_EGLConfig; EGLint m_MajorVersion, m_MinorVersion; bool m_bPowerManagementSupported; EGLint m_iRequestedConfig; EGLint m_iConfig; EGLNativeDisplayType m_NDT; EGLNativePixmapType m_NPT; EGLNativeWindowType m_NWT; public: PVRShellInitAPI() : m_bPowerManagementSupported(false), m_iRequestedConfig(0), m_iConfig(0) {} EGLConfig SelectEGLConfiguration(const PVRShellData * const pData); const char *StringFrom_eglGetError() const; #if defined(BUILD_OGLES) || defined(BUILD_OGLES2) protected: typedef void (GL_APIENTRY * PFNGLDISCARDFRAMEBUFFEREXT)(GLenum target, GLsizei numAttachments, const GLenum *attachments); PFNGLDISCARDFRAMEBUFFEREXT glDiscardFramebufferEXT; #endif }; /*! @} */ #endif // __PVRSHELLAPI_H_ /***************************************************************************** End of file (PVRShellAPI.h) *****************************************************************************/