Home | History | Annotate | Download | only in KEGL
      1 /*!****************************************************************************
      2 
      3  @file         KEGL/PVRShellAPI.h
      4  @ingroup      API_KEGL
      5  @copyright    Copyright (c) Imagination Technologies Limited.
      6  @brief        3D API context management for KEGL.
      7  @details      Makes programming for 3D APIs easier by wrapping surface
      8                initialization, Texture allocation and other functions for use by a demo.
      9 
     10 ******************************************************************************/
     11 
     12 #ifndef __PVRSHELLAPI_H_
     13 #define __PVRSHELLAPI_H_
     14 
     15 /****************************************************************************
     16 ** 3D API header files
     17 ****************************************************************************/
     18 #if defined(BUILD_OGLES2)
     19 	#include <GLES2/gl2.h>
     20 	#include <GLES2/gl2ext.h>
     21 	#include <EGL/egl.h>
     22 	#include <EGL/eglext.h>
     23 #elif defined(BUILD_OGLES3)
     24 	#include <GLES3/gl3.h>
     25 	#include <GLES2/gl2ext.h>
     26 	#include <GLES3/gl3ext.h>
     27 	#include <EGL/egl.h>
     28 	#include <EGL/eglext.h>
     29 #elif defined(BUILD_OGL)
     30 #define SUPPORT_OPENGL
     31 #if defined(_WIN32)
     32 	#include <windows.h>
     33 #endif
     34 	#include <GL/gl.h>
     35 	#include <EGL/egl.h>
     36 	#include <EGL/eglext.h>
     37 #else
     38 	#include <EGL/egl.h>
     39 	#include <EGL/eglext.h>
     40 	#include <GLES/gl.h>
     41 	#include <GLES/glext.h>
     42 	#include <GLES/glplatform.h>
     43 #endif
     44 
     45 /*!***************************************************************************
     46  @addtogroup API_KEGL
     47  @brief      KEGL API
     48  @{
     49 ****************************************************************************/
     50 
     51 /*!***************************************************************************
     52  @class PVRShellInitAPI
     53  @brief Initialisation interface with specific API.
     54 ****************************************************************************/
     55 class PVRShellInitAPI
     56 {
     57 public:
     58 	EGLDisplay	m_EGLDisplay;
     59 	EGLSurface	m_EGLWindow;
     60 	EGLContext	m_EGLContext;
     61 	EGLConfig	m_EGLConfig;
     62 	EGLint		m_MajorVersion, m_MinorVersion;
     63 	bool		m_bPowerManagementSupported;
     64 	EGLint		m_iRequestedConfig;
     65 	EGLint		m_iConfig;
     66 
     67 	EGLNativeDisplayType m_NDT;
     68 	EGLNativePixmapType  m_NPT;
     69 	EGLNativeWindowType  m_NWT;
     70 
     71 
     72 public:
     73 	PVRShellInitAPI() : m_bPowerManagementSupported(false), m_iRequestedConfig(0), m_iConfig(0) {}
     74 	EGLConfig SelectEGLConfiguration(const PVRShellData * const pData);
     75 	const char *StringFrom_eglGetError() const;
     76 
     77 #if defined(BUILD_OGLES) || defined(BUILD_OGLES2)
     78 protected:
     79 	typedef void (GL_APIENTRY * PFNGLDISCARDFRAMEBUFFEREXT)(GLenum target, GLsizei numAttachments, const GLenum *attachments);
     80 	PFNGLDISCARDFRAMEBUFFEREXT			glDiscardFramebufferEXT;
     81 #endif
     82 
     83 };
     84 
     85 /*! @} */
     86 
     87 #endif // __PVRSHELLAPI_H_
     88 
     89 /*****************************************************************************
     90  End of file (PVRShellAPI.h)
     91 *****************************************************************************/
     92 
     93