1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- static PFNGLCREATESHADERPROC glCreateShader = NULL;
- static PFNGLSHADERSOURCEPROC glShaderSource = NULL;
- static PFNGLCOMPILESHADERPROC glCompileShader = NULL;
- static PFNGLGETSHADERIVPROC glGetShaderiv = NULL;
- static PFNGLGETSHADERINFOLOGPROC glGetShaderInfoLog = NULL;
- static PFNGLCREATEPROGRAMPROC glCreateProgram = NULL;
- static PFNGLATTACHSHADERPROC glAttachShader = NULL;
- static PFNGLLINKPROGRAMPROC glLinkProgram = NULL;
- static PFNGLGETPROGRAMIVPROC glGetProgramiv = NULL;
- static PFNGLGETPROGRAMINFOLOGPROC glGetProgramInfoLog = NULL;
- static PFNGLDELETESHADERPROC glDeleteShader = NULL;
- static PFNGLUSEPROGRAMPROC glUseProgram = NULL;
- static PFNGLGENVERTEXARRAYSPROC glGenVertexArrays = NULL;
- static PFNGLBINDVERTEXARRAYPROC glBindVertexArray = NULL;
- static PFNGLDEBUGMESSAGECALLBACKPROC glDebugMessageCallback = NULL;
- static PFNGLDELETEPROGRAMPROC glDeleteProgram = NULL;
- static PFNGLGETUNIFORMLOCATIONPROC glGetUniformLocation = NULL;
- static PFNGLUNIFORM2FPROC glUniform2f = NULL;
- static PFNGLGENBUFFERSPROC glGenBuffers = NULL;
- static PFNGLBINDBUFFERPROC glBindBuffer = NULL;
- static PFNGLBUFFERDATAPROC glBufferData = NULL;
- static PFNGLENABLEVERTEXATTRIBARRAYPROC glEnableVertexAttribArray = NULL;
- static PFNGLVERTEXATTRIBPOINTERPROC glVertexAttribPointer = NULL;
- static PFNGLUNIFORM1FPROC glUniform1f = NULL;
- static PFNGLBUFFERSUBDATAPROC glBufferSubData = NULL;
- static PFNGLDRAWARRAYSINSTANCEDPROC glDrawArraysInstanced = NULL;
- static PFNGLGENFRAMEBUFFERSPROC glGenFramebuffers = NULL;
- static PFNGLBINDFRAMEBUFFERPROC glBindFramebuffer = NULL;
- static PFNGLFRAMEBUFFERTEXTURE2DPROC glFramebufferTexture2D = NULL;
- static PFNGLCHECKFRAMEBUFFERSTATUSPROC glCheckFramebufferStatus = NULL;
- static PFNGLUNIFORM1IPROC glUniform1i = NULL;
- static PFNGLDRAWBUFFERSPROC glDrawBuffers = NULL;
- static PFNGLUNIFORM4FPROC glUniform4f = NULL;
- // TODO: there is something fishy with Windows gl.h header
- // Let's try to ship our own gl.h just like glext.h
- #ifdef _WIN32
- static PFNGLACTIVETEXTUREPROC glActiveTexture = NULL;
- #endif // _WIN32
- static void load_gl_extensions(void)
- {
- // TODO: check for failtures?
- // Maybe some of the functions are not available
- glCreateShader = (PFNGLCREATESHADERPROC) glfwGetProcAddress("glCreateShader");
- glShaderSource = (PFNGLSHADERSOURCEPROC) glfwGetProcAddress("glShaderSource");
- glCompileShader = (PFNGLCOMPILESHADERPROC) glfwGetProcAddress("glCompileShader");
- glGetShaderiv = (PFNGLGETSHADERIVPROC) glfwGetProcAddress("glGetShaderiv");
- glGetShaderInfoLog = (PFNGLGETSHADERINFOLOGPROC) glfwGetProcAddress("glGetShaderInfoLog");
- glAttachShader = (PFNGLATTACHSHADERPROC) glfwGetProcAddress("glAttachShader");
- glCreateProgram = (PFNGLCREATEPROGRAMPROC) glfwGetProcAddress("glCreateProgram");
- glLinkProgram = (PFNGLLINKPROGRAMPROC) glfwGetProcAddress("glLinkProgram");
- glGetProgramiv = (PFNGLGETPROGRAMIVPROC) glfwGetProcAddress("glGetProgramiv");
- glGetProgramInfoLog = (PFNGLGETPROGRAMINFOLOGPROC) glfwGetProcAddress("glGetProgramInfoLog");
- glDeleteShader = (PFNGLDELETESHADERPROC) glfwGetProcAddress("glDeleteShader");
- glUseProgram = (PFNGLUSEPROGRAMPROC) glfwGetProcAddress("glUseProgram");
- glGenVertexArrays = (PFNGLGENVERTEXARRAYSPROC) glfwGetProcAddress("glGenVertexArrays");
- glBindVertexArray = (PFNGLBINDVERTEXARRAYPROC) glfwGetProcAddress("glBindVertexArray");
- glDeleteProgram = (PFNGLDELETEPROGRAMPROC) glfwGetProcAddress("glDeleteProgram");
- glGetUniformLocation = (PFNGLGETUNIFORMLOCATIONPROC) glfwGetProcAddress("glGetUniformLocation");
- glUniform2f = (PFNGLUNIFORM2FPROC) glfwGetProcAddress("glUniform2f");
- glGenBuffers = (PFNGLGENBUFFERSPROC) glfwGetProcAddress("glGenBuffers");
- glBindBuffer = (PFNGLBINDBUFFERPROC) glfwGetProcAddress("glBindBuffer");
- glBufferData = (PFNGLBUFFERDATAPROC) glfwGetProcAddress("glBufferData");
- glEnableVertexAttribArray = (PFNGLENABLEVERTEXATTRIBARRAYPROC) glfwGetProcAddress("glEnableVertexAttribArray");
- glVertexAttribPointer = (PFNGLVERTEXATTRIBPOINTERPROC) glfwGetProcAddress("glVertexAttribPointer");
- glUniform1f = (PFNGLUNIFORM1FPROC) glfwGetProcAddress("glUniform1f");
- glBufferSubData = (PFNGLBUFFERSUBDATAPROC) glfwGetProcAddress("glBufferSubData");
- glGenFramebuffers = (PFNGLGENFRAMEBUFFERSPROC) glfwGetProcAddress("glGenFramebuffers");
- glBindFramebuffer = (PFNGLBINDFRAMEBUFFERPROC) glfwGetProcAddress("glBindFramebuffer");
- glFramebufferTexture2D = (PFNGLFRAMEBUFFERTEXTURE2DPROC) glfwGetProcAddress("glFramebufferTexture2D");
- glCheckFramebufferStatus = (PFNGLCHECKFRAMEBUFFERSTATUSPROC) glfwGetProcAddress("glCheckFramebufferStatus");
- glUniform1i = (PFNGLUNIFORM1IPROC) glfwGetProcAddress("glUniform1i");
- glDrawBuffers = (PFNGLDRAWBUFFERSPROC) glfwGetProcAddress("glDrawBuffers");
- glUniform4f = (PFNGLUNIFORM4FPROC) glfwGetProcAddress("glUniform4f");
- #ifdef _WIN32
- glActiveTexture = (PFNGLACTIVETEXTUREPROC) glfwGetProcAddress("glActiveTexture");
- #endif // _WIN32
- if (glfwExtensionSupported("GL_ARB_debug_output")) {
- fprintf(stderr, "INFO: ARB_debug_output is supported\n");
- glDebugMessageCallback = (PFNGLDEBUGMESSAGECALLBACKPROC) glfwGetProcAddress("glDebugMessageCallback");
- } else {
- fprintf(stderr, "WARN: ARB_debug_output is NOT supported\n");
- }
- if (glfwExtensionSupported("GL_EXT_draw_instanced")) {
- fprintf(stderr, "INFO: EXT_draw_instanced is supported\n");
- glDrawArraysInstanced = (PFNGLDRAWARRAYSINSTANCEDPROC) glfwGetProcAddress("glDrawArraysInstanced");
- } else {
- fprintf(stderr, "WARN: EXT_draw_instanced is NOT supported\n");
- }
- }
|