1 #pragma once 2 3 #include "ppsspp_config.h" 4 5 #if PPSSPP_PLATFORM(IOS) 6 #include <OpenGLES/ES3/gl.h> 7 #include <OpenGLES/ES3/glext.h> 8 #elif defined(USING_GLES2) 9 #include <GLES2/gl2.h> 10 #include <GLES2/gl2ext.h> 11 #define GL_BGRA_EXT 0x80E1 12 #else // OpenGL 13 #include "GL/glew.h" 14 #if defined(__APPLE__) 15 #include <OpenGL/gl.h> 16 #else 17 #include <GL/gl.h> 18 #endif 19 #endif 20 21 #ifdef USING_GLES2 22 // Support OpenGL ES 3.0 23 // This uses the "DYNAMIC" approach from the gles3jni NDK sample. 24 #include "Common/GPU/OpenGL/gl3stub.h" 25 #endif 26 27 28 #ifdef USING_GLES2 29 30 #ifndef GL_MIN_EXT 31 #define GL_MIN_EXT 0x8007 32 #endif 33 34 #ifndef GL_MAX_EXT 35 #define GL_MAX_EXT 0x8008 36 #endif 37 38 #if defined(__ANDROID__) 39 #include <EGL/egl.h> 40 // Additional extensions not included in GLES2/gl2ext.h from the NDK 41 42 typedef uint64_t EGLuint64NV; 43 typedef EGLuint64NV(EGLAPIENTRYP PFNEGLGETSYSTEMTIMEFREQUENCYNVPROC) (void); 44 typedef EGLuint64NV(EGLAPIENTRYP PFNEGLGETSYSTEMTIMENVPROC) (void); 45 extern PFNEGLGETSYSTEMTIMEFREQUENCYNVPROC eglGetSystemTimeFrequencyNV; 46 extern PFNEGLGETSYSTEMTIMENVPROC eglGetSystemTimeNV; 47 48 typedef GLvoid* (GL_APIENTRYP PFNGLMAPBUFFERPROC) (GLenum target, GLenum access); 49 extern PFNGLMAPBUFFERPROC glMapBuffer; 50 51 typedef void (EGLAPIENTRYP PFNGLDRAWTEXTURENVPROC) (GLuint texture, GLuint sampler, GLfloat x0, GLfloat y0, GLfloat x1, GLfloat y1, GLfloat z, GLfloat s0, GLfloat t0, GLfloat s1, GLfloat t1); 52 extern PFNGLDRAWTEXTURENVPROC glDrawTextureNV; 53 #if !PPSSPP_ARCH(ARM64) 54 typedef void (EGLAPIENTRYP PFNGLBLITFRAMEBUFFERNVPROC) ( 55 GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, 56 GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, 57 GLbitfield mask, GLenum filter); 58 #endif 59 extern PFNGLBLITFRAMEBUFFERNVPROC glBlitFramebufferNV; 60 61 #if PPSSPP_PLATFORM(IOS) 62 extern PFNGLDISCARDFRAMEBUFFEREXTPROC glDiscardFramebufferEXT; 63 extern PFNGLGENVERTEXARRAYSOESPROC glGenVertexArraysOES; 64 extern PFNGLBINDVERTEXARRAYOESPROC glBindVertexArrayOES; 65 extern PFNGLDELETEVERTEXARRAYSOESPROC glDeleteVertexArraysOES; 66 extern PFNGLISVERTEXARRAYOESPROC glIsVertexArrayOES; 67 68 // Rename standard functions to the OES version. 69 #define glGenVertexArrays glGenVertexArraysOES 70 #define glBindVertexArray glBindVertexArrayOES 71 #define glDeleteVertexArrays glDeleteVertexArraysOES 72 #define glIsVertexArray glIsVertexArrayOES 73 #endif 74 75 #endif 76 77 #ifndef GL_READ_FRAMEBUFFER 78 #define GL_READ_FRAMEBUFFER GL_FRAMEBUFFER 79 #define GL_DRAW_FRAMEBUFFER GL_FRAMEBUFFER 80 #endif 81 #ifndef GL_DEPTH_COMPONENT24 82 #define GL_DEPTH_COMPONENT24 GL_DEPTH_COMPONENT24_OES 83 #endif 84 85 #ifndef GL_RGBA8 86 #define GL_RGBA8 GL_RGBA 87 #endif 88 89 #endif /* EGL_NV_system_time */ 90 91 #ifndef GL_DEPTH24_STENCIL8_OES 92 #define GL_DEPTH24_STENCIL8_OES 0x88F0 93 #endif 94