5 * Created by Toshi Nagata on 2014/03/17.
6 * Copyright 2008-2014 Toshi Nagata. All rights reserved.
8 This program 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 version 2 of the License.
12 This program is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
18 /* Implement OpenGL extentions */
20 #include "OpenGL_extensions.h"
22 /* Function pointers */
23 typedef GLboolean (*t_glIsRenderbufferEXT)(GLuint renderbuffer);
24 typedef void (*t_glBindRenderbufferEXT)(GLenum target, GLuint renderbuffer);
25 typedef void (*t_glDeleteRenderbuffersEXT)(GLsizei n, const GLuint * renderbuffers);
26 typedef void (*t_glGenRenderbuffersEXT)(GLsizei n, GLuint * renderbuffers);
27 typedef void (*t_glRenderbufferStorageEXT)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height);
28 typedef void (*t_glGetRenderbufferParameterivEXT)(GLenum target, GLenum pname, GLint * params);
29 typedef GLboolean (*t_glIsFramebufferEXT)(GLuint framebuffer);
30 typedef void (*t_glBindFramebufferEXT)(GLenum target, GLuint framebuffer);
31 typedef void (*t_glDeleteFramebuffersEXT)(GLsizei n, const GLuint * framebuffers);
32 typedef void (*t_glGenFramebuffersEXT)(GLsizei n, GLuint * framebuffers);
33 typedef GLenum (*t_glCheckFramebufferStatusEXT)(GLenum target);
34 typedef void (*t_glFramebufferTexture1DEXT)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
35 typedef void (*t_glFramebufferTexture2DEXT)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
36 typedef void (*t_glFramebufferTexture3DEXT)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset);
37 typedef void (*t_glFramebufferRenderbufferEXT)(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
38 typedef void (*t_glGetFramebufferAttachmentParameterivEXT)(GLenum target, GLenum attachment, GLenum pname, GLint * params);
39 typedef void (*t_glGenerateMipmapEXT)(GLenum target);
41 static t_glIsRenderbufferEXT p_glIsRenderbufferEXT;
42 static t_glBindRenderbufferEXT p_glBindRenderbufferEXT;
43 static t_glDeleteRenderbuffersEXT p_glDeleteRenderbuffersEXT;
44 static t_glGenRenderbuffersEXT p_glGenRenderbuffersEXT;
45 static t_glRenderbufferStorageEXT p_glRenderbufferStorageEXT;
46 static t_glGetRenderbufferParameterivEXT p_glGetRenderbufferParameterivEXT;
47 static t_glIsFramebufferEXT p_glIsFramebufferEXT;
48 static t_glBindFramebufferEXT p_glBindFramebufferEXT;
49 static t_glDeleteFramebuffersEXT p_glDeleteFramebuffersEXT;
50 static t_glGenFramebuffersEXT p_glGenFramebuffersEXT;
51 static t_glCheckFramebufferStatusEXT p_glCheckFramebufferStatusEXT;
52 static t_glFramebufferTexture1DEXT p_glFramebufferTexture1DEXT;
53 static t_glFramebufferTexture2DEXT p_glFramebufferTexture2DEXT;
54 static t_glFramebufferTexture3DEXT p_glFramebufferTexture3DEXT;
55 static t_glFramebufferRenderbufferEXT p_glFramebufferRenderbufferEXT;
56 static t_glGetFramebufferAttachmentParameterivEXT p_glGetFramebufferAttachmentParameterivEXT;
57 static t_glGenerateMipmapEXT p_glGenerateMipmapEXT;
59 static int p_inited = 0;
62 InitializeOpenGLExtensions(void)
67 p_glIsRenderbufferEXT = (t_glIsRenderbufferEXT)wglGetProcAddress("glIsRenderbufferEXT");
68 if (p_glIsRenderbufferEXT == NULL)
70 p_glBindRenderbufferEXT = (t_glBindRenderbufferEXT)wglGetProcAddress("glBindRenderbufferEXT");
71 if (p_glBindRenderbufferEXT == NULL)
73 p_glDeleteRenderbuffersEXT = (t_glDeleteRenderbuffersEXT)wglGetProcAddress("glDeleteRenderbuffersEXT");
74 if (p_glDeleteRenderbuffersEXT == NULL)
76 p_glGenRenderbuffersEXT = (t_glGenRenderbuffersEXT)wglGetProcAddress("glGenRenderbuffersEXT");
77 if (p_glGenRenderbuffersEXT == NULL)
79 p_glRenderbufferStorageEXT = (t_glRenderbufferStorageEXT)wglGetProcAddress("glRenderbufferStorageEXT");
80 if (p_glRenderbufferStorageEXT == NULL)
82 p_glGetRenderbufferParameterivEXT = (t_glGetRenderbufferParameterivEXT)wglGetProcAddress("glGetRenderbufferParameterivEXT");
83 if (p_glGetRenderbufferParameterivEXT == NULL)
85 p_glIsFramebufferEXT = (t_glIsFramebufferEXT)wglGetProcAddress("glIsFramebufferEXT");
86 if (p_glIsFramebufferEXT == NULL)
88 p_glBindFramebufferEXT = (t_glBindFramebufferEXT)wglGetProcAddress("glBindFramebufferEXT");
89 if (p_glBindFramebufferEXT == NULL)
91 p_glDeleteFramebuffersEXT = (t_glDeleteFramebuffersEXT)wglGetProcAddress("glDeleteFramebuffersEXT");
92 if (p_glDeleteFramebuffersEXT == NULL)
94 p_glGenFramebuffersEXT = (t_glGenFramebuffersEXT)wglGetProcAddress("glGenFramebuffersEXT");
95 if (p_glGenFramebuffersEXT == NULL)
97 p_glCheckFramebufferStatusEXT = (t_glCheckFramebufferStatusEXT)wglGetProcAddress("glCheckFramebufferStatusEXT");
98 if (p_glCheckFramebufferStatusEXT == NULL)
100 p_glFramebufferTexture1DEXT = (t_glFramebufferTexture1DEXT)wglGetProcAddress("glFramebufferTexture1DEXT");
101 if (p_glFramebufferTexture1DEXT == NULL)
103 p_glFramebufferTexture2DEXT = (t_glFramebufferTexture2DEXT)wglGetProcAddress("glFramebufferTexture2DEXT");
104 if (p_glFramebufferTexture2DEXT == NULL)
106 p_glFramebufferTexture3DEXT = (t_glFramebufferTexture3DEXT)wglGetProcAddress("glFramebufferTexture3DEXT");
107 if (p_glFramebufferTexture3DEXT == NULL)
109 p_glFramebufferRenderbufferEXT = (t_glFramebufferRenderbufferEXT)wglGetProcAddress("glFramebufferRenderbufferEXT");
110 if (p_glFramebufferRenderbufferEXT == NULL)
112 p_glGetFramebufferAttachmentParameterivEXT = (t_glGetFramebufferAttachmentParameterivEXT)wglGetProcAddress("glGetFramebufferAttachmentParameterivEXT");
113 if (p_glGetFramebufferAttachmentParameterivEXT == NULL)
115 p_glGenerateMipmapEXT = (t_glGenerateMipmapEXT)wglGetProcAddress("glGenerateMipmapEXT");
116 if (p_glGenerateMipmapEXT == NULL)
122 GLboolean glIsRenderbufferEXT(GLuint renderbuffer)
124 return (*p_glIsRenderbufferEXT)(renderbuffer);
127 void glBindRenderbufferEXT(GLenum target, GLuint renderbuffer)
129 (*p_glBindRenderbufferEXT)(target, renderbuffer);
132 void glDeleteRenderbuffersEXT(GLsizei n, const GLuint * renderbuffers)
134 (*p_glDeleteRenderbuffersEXT)(n, renderbuffers);
137 void glGenRenderbuffersEXT(GLsizei n, GLuint * renderbuffers)
139 (*p_glGenRenderbuffersEXT)(n, renderbuffers);
142 void glRenderbufferStorageEXT(GLenum target, GLenum internalformat, GLsizei width, GLsizei height)
144 (*p_glRenderbufferStorageEXT)(target, internalformat, width, height);
147 void glGetRenderbufferParameterivEXT(GLenum target, GLenum pname, GLint * params)
149 (*p_glGetRenderbufferParameterivEXT)(target, pname, params);
152 GLboolean glIsFramebufferEXT(GLuint framebuffer)
154 (*p_glIsFramebufferEXT)(framebuffer);
157 void glBindFramebufferEXT(GLenum target, GLuint framebuffer)
159 (*p_glBindFramebufferEXT)(target, framebuffer);
162 void glDeleteFramebuffersEXT(GLsizei n, const GLuint * framebuffers)
164 (*p_glDeleteFramebuffersEXT)(n, framebuffers);
167 void glGenFramebuffersEXT(GLsizei n, GLuint * framebuffers)
169 (*p_glGenFramebuffersEXT)(n, framebuffers);
172 GLenum glCheckFramebufferStatusEXT(GLenum target)
174 return (*p_glCheckFramebufferStatusEXT)(target);
177 void glFramebufferTexture1DEXT(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level)
179 (*p_glFramebufferTexture1DEXT)(target, attachment, textarget, texture, level);
182 void glFramebufferTexture2DEXT(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level)
184 (*p_glFramebufferTexture2DEXT)(target, attachment, textarget, texture, level);
187 void glFramebufferTexture3DEXT(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset)
189 (*p_glFramebufferTexture3DEXT)(target, attachment, textarget, texture, level, zoffset);
192 void glFramebufferRenderbufferEXT(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer)
194 (*p_glFramebufferRenderbufferEXT)(target, attachment, renderbuffertarget, renderbuffer);
197 void glGetFramebufferAttachmentParameterivEXT(GLenum target, GLenum attachment, GLenum pname, GLint * params)
199 (*p_glGetFramebufferAttachmentParameterivEXT)(target, attachment, pname, params);
202 void glGenerateMipmapEXT(GLenum target)
204 (*p_glGenerateMipmapEXT)(target);