1 /************************************************************************************ 2 3 AstroMenace 4 Hardcore 3D space scroll-shooter with spaceship upgrade possibilities. 5 Copyright (c) 2006-2019 Mikhail Kurinnoi, Viewizard 6 7 8 AstroMenace is free software: you can redistribute it and/or modify 9 it under the terms of the GNU General Public License as published by 10 the Free Software Foundation, either version 3 of the License, or 11 (at your option) any later version. 12 13 AstroMenace is distributed in the hope that it will be useful, 14 but WITHOUT ANY WARRANTY; without even the implied warranty of 15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 GNU General Public License for more details. 17 18 You should have received a copy of the GNU General Public License 19 along with AstroMenace. If not, see <https://www.gnu.org/licenses/>. 20 21 22 Website: https://viewizard.com/ 23 Project: https://github.com/viewizard/astromenace 24 E-mail: viewizard@viewizard.com 25 26 *************************************************************************************/ 27 28 /* 29 Should be for graphic's internal use only. 30 31 Rules for functions and variables naming: 32 "__" prefix for functions; 33 "_" prefix for variables. 34 */ 35 36 #ifndef CORE_GRAPHICS_EXTENSION_H 37 #define CORE_GRAPHICS_EXTENSION_H 38 39 #include "opengl.h" 40 41 namespace viewizard { 42 43 // OpenGL 1.3 (only what we need or would need in future) 44 extern PFNGLACTIVETEXTUREPROC pfn_glActiveTexture; 45 extern PFNGLCLIENTACTIVETEXTUREPROC pfn_glClientActiveTexture; 46 47 // OpenGL 1.5 (only what we need or would need in future) 48 extern PFNGLBINDBUFFERPROC pfn_glBindBuffer; 49 extern PFNGLDELETEBUFFERSPROC pfn_glDeleteBuffers; 50 extern PFNGLGENBUFFERSPROC pfn_glGenBuffers; 51 extern PFNGLISBUFFERPROC pfn_glIsBuffer; 52 extern PFNGLBUFFERDATAPROC pfn_glBufferData; 53 54 // OpenGL 2.0 (only what we need or would need in future) 55 extern PFNGLATTACHSHADERPROC pfn_glAttachShader; 56 extern PFNGLBINDATTRIBLOCATIONPROC pfn_glBindAttribLocation; 57 extern PFNGLCOMPILESHADERPROC pfn_glCompileShader; 58 extern PFNGLCREATEPROGRAMPROC pfn_glCreateProgram; 59 extern PFNGLCREATESHADERPROC pfn_glCreateShader; 60 extern PFNGLDELETEPROGRAMPROC pfn_glDeleteProgram; 61 extern PFNGLDELETESHADERPROC pfn_glDeleteShader; 62 extern PFNGLDETACHSHADERPROC pfn_glDetachShader; 63 extern PFNGLGETACTIVEATTRIBPROC pfn_glGetActiveAttrib; 64 extern PFNGLGETACTIVEUNIFORMPROC pfn_glGetActiveUniform; 65 extern PFNGLGETATTACHEDSHADERSPROC pfn_glGetAttachedShaders; 66 extern PFNGLGETATTRIBLOCATIONPROC pfn_glGetAttribLocation; 67 extern PFNGLGETPROGRAMIVPROC pfn_glGetProgramiv; 68 extern PFNGLGETPROGRAMINFOLOGPROC pfn_glGetProgramInfoLog; 69 extern PFNGLGETSHADERIVPROC pfn_glGetShaderiv; 70 extern PFNGLGETSHADERINFOLOGPROC pfn_glGetShaderInfoLog; 71 extern PFNGLGETSHADERSOURCEPROC pfn_glGetShaderSource; 72 extern PFNGLGETUNIFORMLOCATIONPROC pfn_glGetUniformLocation; 73 extern PFNGLGETUNIFORMFVPROC pfn_glGetUniformfv; 74 extern PFNGLGETUNIFORMIVPROC pfn_glGetUniformiv; 75 extern PFNGLISPROGRAMPROC pfn_glIsProgram; 76 extern PFNGLISSHADERPROC pfn_glIsShader; 77 extern PFNGLLINKPROGRAMPROC pfn_glLinkProgram; 78 extern PFNGLSHADERSOURCEPROC pfn_glShaderSource; 79 extern PFNGLUSEPROGRAMPROC pfn_glUseProgram; 80 extern PFNGLUNIFORM1FPROC pfn_glUniform1f; 81 extern PFNGLUNIFORM2FPROC pfn_glUniform2f; 82 extern PFNGLUNIFORM3FPROC pfn_glUniform3f; 83 extern PFNGLUNIFORM4FPROC pfn_glUniform4f; 84 extern PFNGLUNIFORM1IPROC pfn_glUniform1i; 85 extern PFNGLUNIFORM2IPROC pfn_glUniform2i; 86 extern PFNGLUNIFORM3IPROC pfn_glUniform3i; 87 extern PFNGLUNIFORM4IPROC pfn_glUniform4i; 88 extern PFNGLUNIFORM1FVPROC pfn_glUniform1fv; 89 extern PFNGLUNIFORM2FVPROC pfn_glUniform2fv; 90 extern PFNGLUNIFORM3FVPROC pfn_glUniform3fv; 91 extern PFNGLUNIFORM4FVPROC pfn_glUniform4fv; 92 extern PFNGLUNIFORM1IVPROC pfn_glUniform1iv; 93 extern PFNGLUNIFORM2IVPROC pfn_glUniform2iv; 94 extern PFNGLUNIFORM3IVPROC pfn_glUniform3iv; 95 extern PFNGLUNIFORM4IVPROC pfn_glUniform4iv; 96 extern PFNGLVALIDATEPROGRAMPROC pfn_glValidateProgram; 97 98 // OpenGL 2.1 (only what we need or would need in future) 99 extern PFNGLUNIFORMMATRIX2X3FVPROC pfn_glUniformMatrix2x3fv; 100 extern PFNGLUNIFORMMATRIX3X2FVPROC pfn_glUniformMatrix3x2fv; 101 extern PFNGLUNIFORMMATRIX2X4FVPROC pfn_glUniformMatrix2x4fv; 102 extern PFNGLUNIFORMMATRIX4X2FVPROC pfn_glUniformMatrix4x2fv; 103 extern PFNGLUNIFORMMATRIX3X4FVPROC pfn_glUniformMatrix3x4fv; 104 extern PFNGLUNIFORMMATRIX4X3FVPROC pfn_glUniformMatrix4x3fv; 105 106 // OpenGL 3.0 (only what we need or would need in future) 107 extern PFNGLBINDRENDERBUFFERPROC pfn_glBindRenderbuffer; 108 extern PFNGLDELETERENDERBUFFERSPROC pfn_glDeleteRenderbuffers; 109 extern PFNGLGENRENDERBUFFERSPROC pfn_glGenRenderbuffers; 110 extern PFNGLISFRAMEBUFFERPROC pfn_glIsFramebuffer; 111 extern PFNGLBINDFRAMEBUFFERPROC pfn_glBindFramebuffer; 112 extern PFNGLDELETEFRAMEBUFFERSPROC pfn_glDeleteFramebuffers; 113 extern PFNGLGENFRAMEBUFFERSPROC pfn_glGenFramebuffers; 114 extern PFNGLCHECKFRAMEBUFFERSTATUSPROC pfn_glCheckFramebufferStatus; 115 extern PFNGLFRAMEBUFFERTEXTURE2DPROC pfn_glFramebufferTexture2D; 116 extern PFNGLFRAMEBUFFERRENDERBUFFERPROC pfn_glFramebufferRenderbuffer; 117 extern PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC pfn_glGetFramebufferAttachmentParameteriv; 118 extern PFNGLGENERATEMIPMAPPROC pfn_glGenerateMipmap; 119 extern PFNGLBLITFRAMEBUFFERPROC pfn_glBlitFramebuffer; 120 extern PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC pfn_glRenderbufferStorageMultisample; 121 extern PFNGLBINDVERTEXARRAYPROC pfn_glBindVertexArray; 122 extern PFNGLDELETEVERTEXARRAYSPROC pfn_glDeleteVertexArrays; 123 extern PFNGLGENVERTEXARRAYSPROC pfn_glGenVertexArrays; 124 extern PFNGLISVERTEXARRAYPROC pfn_glIsVertexArray; 125 126 // OpenGL 4.2 (only what we need or would need in future) 127 extern PFNGLTEXSTORAGE2DPROC pfn_glTexStorage2D; 128 129 // GL_NV_framebuffer_multisample_coverage 130 extern PFNGLRENDERBUFFERSTORAGEMULTISAMPLECOVERAGENVPROC pfn_glRenderbufferStorageMultisampleCoverageNV; 131 132 133 bool Initialize_OpenGL_1_3(); 134 bool Initialize_OpenGL_1_5(); 135 bool Initialize_OpenGL_2_0(); 136 bool Initialize_OpenGL_2_1(); 137 bool Initialize_OpenGL_3_0(); 138 bool Initialize_OpenGL_4_2(); 139 bool Initialize_GL_NV_framebuffer_multisample_coverage(); 140 141 } // viewizard namespace 142 143 #endif // CORE_GRAPHICS_EXTENSION_H 144