#ifndef __EFFEKSEERRENDERER_GL_GLEXTENSION_H__ #define __EFFEKSEERRENDERER_GL_GLEXTENSION_H__ //---------------------------------------------------------------------------------- // Include //---------------------------------------------------------------------------------- // #if defined(_WIN32) // #include // #endif // #if defined(__EFFEKSEER_RENDERER_GLES2__) // #if defined(__APPLE__) // #include // #include // #else // #include // #include // #endif // #elif defined(__EFFEKSEER_RENDERER_GLES3__) // #if defined(__APPLE__) // #include // #else // #define GL_GLEXT_PROTOTYPES // #include // #endif // #elif defined(__EFFEKSEER_RENDERER_GL2__) // #if _WIN32 // #include // #elif defined(__APPLE__) // #define GL_SILENCE_DEPRECATION // #include // #else // #include // #endif // #else // #ifdef EMSCRIPTEN // #define GL_GLEXT_PROTOTYPES // #define EGL_EGLEXT_PROTOTYPES // #endif // EMSCRIPTEN // #if defined(_WIN32) // #include // #elif defined(__APPLE__) // #define GL_SILENCE_DEPRECATION // #include // #else // #define GL_GLEXT_PROTOTYPES // #include // #endif // #endif #include "platform/CCGL.h" #include "EffekseerRendererGL.Base.Pre.h" #include // #if defined(_WIN32) || defined(EMSCRIPTEN) // typedef ptrdiff_t GLsizeiptr; // typedef ptrdiff_t GLintptr; // #endif // #if defined(_WIN32) || defined(EMSCRIPTEN) || defined(__ANDROID__) || (defined(__APPLE__) && (defined(__EFFEKSEER_RENDERER_GLES2__) || defined(__EFFEKSEER_RENDERER_GLES3__))) // #define GL_BGRA 0x80E1 // #define GL_DEPTH_COMPONENT32 0x81A7 // #endif // #if defined(_WIN32) || defined(EMSCRIPTEN) || defined(__ANDROID__) || (defined(__APPLE__) && defined(__EFFEKSEER_RENDERER_GLES2__)) // typedef char GLchar; // #define GL_ELEMENT_ARRAY_BUFFER 0x8893 // #define GL_STREAM_DRAW 0x88E0 // #define GL_DYNAMIC_DRAW 0x88E8 // #define GL_FUNC_ADD 0x8006 // #define GL_MIN 0x8007 // #define GL_MAX 0x8008 // #define GL_FUNC_SUBTRACT 0x800A // #define GL_FUNC_REVERSE_SUBTRACT 0x800B // #define GL_CLAMP_TO_EDGE 0x812F // #define GL_TEXTURE0 0x84C0 // #define GL_BLEND_SRC_ALPHA 0x80CB // #define GL_BLEND_DST_ALPHA 0x80CA // #define GL_BLEND_SRC_RGB 0x80C9 // #define GL_BLEND_DST_RGB 0x80C8 // #define GL_BLEND_EQUATION 0x8009 // #define GL_ARRAY_BUFFER 0x8892 // #define GL_STATIC_DRAW 0x88E4 // #define GL_VERTEX_SHADER 0x8B31 // #define GL_FRAGMENT_SHADER 0x8B30 // #define GL_COMPILE_STATUS 0x8B81 // #define GL_LINK_STATUS 0x8B82 // #define GL_CURRENT_PROGRAM 0x8B8D // #define GL_VERTEX_ARRAY_BINDING 0x85B5 // #define GL_ARRAY_BUFFER_BINDING 0x8894 // #define GL_ELEMENT_ARRAY_BUFFER_BINDING 0x8895 // #define GL_SRGB8_ALPHA8 0x8C43 // #define GL_FRAMEBUFFER_SRGB 0x8DB9 // #define GL_MAP_READ_BIT 0x0001 // #define GL_MAP_WRITE_BIT 0x0002 // #define GL_MAP_INVALIDATE_RANGE_BIT 0x0004 // #define GL_MAP_INVALIDATE_BUFFER_BIT 0x0008 // #define GL_MAP_FLUSH_EXPLICIT_BIT 0x0010 // #define GL_MAP_UNSYNCHRONIZED_BIT 0x0020 // #define GL_R8 0x8229 // #define GL_R16F 0x822D // #define GL_R32F 0x822E // #define GL_RG 0x8227 // #define GL_RG16F 0x822f // #define GL_HALF_FLOAT 0x140b // #define GL_RGBA16F 0x881a // #define GL_RGBA32F 0x8814 // #define GL_DEPTH24_STENCIL8 0x88F0 // #define GL_DEPTH32F_STENCIL8 0x8CAD // #define GL_DEPTH_COMPONENT24 0x81A6 // #define GL_DEPTH_STENCIL 0x84F9 // #define GL_FRAMEBUFFER 0x8D40 // #define GL_FRAMEBUFFER_BINDING 0x8CA6 // #define GL_RENDERBUFFER 0x8D41 // #define GL_RENDERBUFFER_BINDING 0x8CA7 // #define GL_COLOR_ATTACHMENT0 0x8CE0 // #define GL_COLOR_ATTACHMENT1 0x8CE1 // #define GL_COLOR_ATTACHMENT2 0x8CE2 // #define GL_COLOR_ATTACHMENT3 0x8CE3 // #define GL_COLOR_ATTACHMENT4 0x8CE4 // #define GL_COLOR_ATTACHMENT5 0x8CE5 // #define GL_COLOR_ATTACHMENT6 0x8CE6 // #define GL_COLOR_ATTACHMENT7 0x8CE7 // #define GL_COLOR_ATTACHMENT8 0x8CE8 // #define GL_COLOR_ATTACHMENT9 0x8CE9 // #define GL_COLOR_ATTACHMENT10 0x8CEA // #define GL_COLOR_ATTACHMENT11 0x8CEB // #define GL_COLOR_ATTACHMENT12 0x8CEC // #define GL_COLOR_ATTACHMENT13 0x8CED // #define GL_COLOR_ATTACHMENT14 0x8CEE // #define GL_COLOR_ATTACHMENT15 0x8CEF // #define GL_DEPTH_ATTACHMENT 0x8D00 // #define GL_STENCIL_ATTACHMENT 0x8D20 // #define GL_RED 0x1903 // #define GL_MAX_VARYING_VECTORS 0x8DFC // #define GL_MAX_VERTEX_UNIFORM_VECTORS 0x8DFB // #define GL_MAX_FRAGMENT_UNIFORM_VECTORS 0x8DFD // #define GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS 0x8B4C // #define GL_MAX_TEXTURE_IMAGE_UNITS 0x8872 // #endif // #define GL_COMPRESSED_RGBA_S3TC_DXT1_EXT 0x83F1 // #define GL_COMPRESSED_RGBA_S3TC_DXT3_EXT 0x83F2 // #define GL_COMPRESSED_RGBA_S3TC_DXT5_EXT 0x83F3 // #define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT 0x8C4D // #define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT 0x8C4E // #define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT 0x8C4F // #define GL_TEXTURE_2D_ARRAY 0x8C1A // #define GL_TEXTURE_BINDING_2D_ARRAY 0x8C1D // #define GL_TEXTURE_3D 0x806F // #define GL_TEXTURE_BINDING_3D 0x806A // // TODO why redifinition // //#ifndef GL_WRITE_ONLY // #define GL_WRITE_ONLY 0x000088b9 // //#endif namespace EffekseerRendererGL { namespace GLExt { OpenGLDeviceType GetDeviceType(); bool Initialize(OpenGLDeviceType deviceType, bool isExtensionsEnabled); bool IsSupportedVertexArray(); bool IsSupportedBufferRange(); bool IsSupportedMapBuffer(); //! for some devices to avoid a bug void MakeMapBufferInvalid(); void glDeleteBuffers(GLsizei n, const GLuint* buffers); GLuint glCreateShader(GLenum type); void glBindBuffer(GLenum target, GLuint buffer); void glGenBuffers(GLsizei n, GLuint* buffers); void glBufferData(GLenum target, GLsizeiptr size, const GLvoid* data, GLenum usage); void glBlendEquationSeparate(GLenum modeRGB, GLenum modeAlpha); void glBlendFuncSeparate(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); void glBlendEquation(GLenum mode); void glActiveTexture(GLenum texture); void glUniform1i(GLint location, GLint v0); void glShaderSource(GLuint shader, GLsizei count, const GLchar** strings, const GLint* lengths); void glCompileShader(GLuint shader); void glGetShaderiv(GLuint shader, GLenum pname, GLint* param); GLuint glCreateProgram(void); void glAttachShader(GLuint program, GLuint shader); void glDeleteProgram(GLuint program); void glDeleteShader(GLuint shader); void glLinkProgram(GLuint program); void glGetProgramiv(GLuint program, GLenum pname, GLint* param); void glGetShaderInfoLog(GLuint shader, GLsizei bufSize, GLsizei* length, GLchar* infoLog); void glGetProgramInfoLog(GLuint program, GLsizei bufSize, GLsizei* length, GLchar* infoLog); GLint glGetAttribLocation(GLuint program, const GLchar* name); GLint glGetUniformLocation(GLuint program, const GLchar* name); void glUseProgram(GLuint program); void glEnableVertexAttribArray(GLuint index); void glDisableVertexAttribArray(GLuint index); void glVertexAttribPointer(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid* pointer); void glUniformMatrix4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat* value); void glUniform4fv(GLint location, GLsizei count, const GLfloat* value); void glGenerateMipmap(GLenum target); void glBufferSubData(GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid* data); void glGenVertexArrays(GLsizei n, GLuint* arrays); void glDeleteVertexArrays(GLsizei n, const GLuint* arrays); void glBindVertexArray(GLuint array); void glGenSamplers(GLsizei n, GLuint* samplers); void glDeleteSamplers(GLsizei n, const GLuint* samplers); void glSamplerParameteri(GLuint sampler, GLenum pname, GLint param); void glBindSampler(GLuint unit, GLuint sampler); void* glMapBuffer(GLenum target, GLenum access); void* glMapBufferRange(GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access); GLboolean glUnmapBuffer(GLenum target); void glDrawElementsInstanced(GLenum mode, GLsizei count, GLenum type, const void* indices, GLsizei primcount); void glCompressedTexImage2D( GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void* data); void glGenFramebuffers(GLsizei n, GLuint* ids); void glBindFramebuffer(GLenum target, GLuint framebuffer); void glDeleteFramebuffers(GLsizei n, GLuint* framebuffers); void glFramebufferTexture2D(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); void glGenRenderbuffers(GLsizei n, GLuint* renderbuffers); void glBindRenderbuffer(GLenum target, GLuint renderbuffer); void glDeleteRenderbuffers(GLsizei n, GLuint* renderbuffers); void glRenderbufferStorageMultisample(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); void glDrawBuffers(GLsizei n, const GLenum* bufs); void glTexImage3D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void* data); void glCopyTexSubImage3D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); //---------------------------------------------------------------------------------- // //---------------------------------------------------------------------------------- } // namespace GLExt } // namespace EffekseerRendererGL //---------------------------------------------------------------------------------- // //---------------------------------------------------------------------------------- #endif // __EFFEKSEERRENDERER_GL_GLEXTENSION_H__