OSDN Git Service

7066ade8ce534d6fc18e7c207f58483da7ac44bb
[molby/Molby.git] / wxSources / OpenGL_extensions.c
1 /*
2  *  OpenGL_extensions.c
3  *  Molby
4  *
5  *  Created by Toshi Nagata on 2014/03/17.
6  *  Copyright 2008-2014 Toshi Nagata. All rights reserved.
7  *
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.
11  
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.
16  */
17
18 /*  Implement OpenGL extentions  */
19
20 #include "OpenGL_extensions.h"
21
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);
40
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;
58
59 static int p_inited = 0;
60
61 int
62 InitializeOpenGLExtensions(void)
63 {
64     int n = 0;
65     if (p_inited != 0)
66         return;
67     p_glIsRenderbufferEXT = (t_glIsRenderbufferEXT)wglGetProcAddress("glIsRenderbufferEXT");
68     if (p_glIsRenderbufferEXT == NULL)
69         n++;
70     p_glBindRenderbufferEXT = (t_glBindRenderbufferEXT)wglGetProcAddress("glBindRenderbufferEXT");
71     if (p_glBindRenderbufferEXT == NULL)
72         n++;
73     p_glDeleteRenderbuffersEXT = (t_glDeleteRenderbuffersEXT)wglGetProcAddress("glDeleteRenderbuffersEXT");
74     if (p_glDeleteRenderbuffersEXT == NULL)
75         n++;
76     p_glGenRenderbuffersEXT = (t_glGenRenderbuffersEXT)wglGetProcAddress("glGenRenderbuffersEXT");
77     if (p_glGenRenderbuffersEXT == NULL)
78         n++;
79     p_glRenderbufferStorageEXT = (t_glRenderbufferStorageEXT)wglGetProcAddress("glRenderbufferStorageEXT");
80     if (p_glRenderbufferStorageEXT == NULL)
81         n++;
82     p_glGetRenderbufferParameterivEXT = (t_glGetRenderbufferParameterivEXT)wglGetProcAddress("glGetRenderbufferParameterivEXT");
83     if (p_glGetRenderbufferParameterivEXT == NULL)
84         n++;
85     p_glIsFramebufferEXT = (t_glIsFramebufferEXT)wglGetProcAddress("glIsFramebufferEXT");
86     if (p_glIsFramebufferEXT == NULL)
87         n++;
88     p_glBindFramebufferEXT = (t_glBindFramebufferEXT)wglGetProcAddress("glBindFramebufferEXT");
89     if (p_glBindFramebufferEXT == NULL)
90         n++;
91     p_glDeleteFramebuffersEXT = (t_glDeleteFramebuffersEXT)wglGetProcAddress("glDeleteFramebuffersEXT");
92     if (p_glDeleteFramebuffersEXT == NULL)
93         n++;
94     p_glGenFramebuffersEXT = (t_glGenFramebuffersEXT)wglGetProcAddress("glGenFramebuffersEXT");
95     if (p_glGenFramebuffersEXT == NULL)
96         n++;
97     p_glCheckFramebufferStatusEXT = (t_glCheckFramebufferStatusEXT)wglGetProcAddress("glCheckFramebufferStatusEXT");
98     if (p_glCheckFramebufferStatusEXT == NULL)
99         n++;
100     p_glFramebufferTexture1DEXT = (t_glFramebufferTexture1DEXT)wglGetProcAddress("glFramebufferTexture1DEXT");
101     if (p_glFramebufferTexture1DEXT == NULL)
102         n++;
103     p_glFramebufferTexture2DEXT = (t_glFramebufferTexture2DEXT)wglGetProcAddress("glFramebufferTexture2DEXT");
104     if (p_glFramebufferTexture2DEXT == NULL)
105         n++;
106     p_glFramebufferTexture3DEXT = (t_glFramebufferTexture3DEXT)wglGetProcAddress("glFramebufferTexture3DEXT");
107     if (p_glFramebufferTexture3DEXT == NULL)
108         n++;
109     p_glFramebufferRenderbufferEXT = (t_glFramebufferRenderbufferEXT)wglGetProcAddress("glFramebufferRenderbufferEXT");
110     if (p_glFramebufferRenderbufferEXT == NULL)
111         n++;
112     p_glGetFramebufferAttachmentParameterivEXT = (t_glGetFramebufferAttachmentParameterivEXT)wglGetProcAddress("glGetFramebufferAttachmentParameterivEXT");
113     if (p_glGetFramebufferAttachmentParameterivEXT == NULL)
114         n++;
115     p_glGenerateMipmapEXT = (t_glGenerateMipmapEXT)wglGetProcAddress("glGenerateMipmapEXT");
116     if (p_glGenerateMipmapEXT == NULL)
117         n++;
118     p_inited = 1;
119     return n;
120 }
121
122 GLboolean glIsRenderbufferEXT(GLuint renderbuffer)
123 {
124         return (*p_glIsRenderbufferEXT)(renderbuffer);
125 }
126
127 void glBindRenderbufferEXT(GLenum target, GLuint renderbuffer)
128 {
129         (*p_glBindRenderbufferEXT)(target, renderbuffer);
130 }
131
132 void glDeleteRenderbuffersEXT(GLsizei n, const GLuint * renderbuffers)
133 {
134         (*p_glDeleteRenderbuffersEXT)(n, renderbuffers);
135 }
136
137 void glGenRenderbuffersEXT(GLsizei n, GLuint * renderbuffers)
138 {
139         (*p_glGenRenderbuffersEXT)(n, renderbuffers);
140 }
141
142 void glRenderbufferStorageEXT(GLenum target, GLenum internalformat, GLsizei width, GLsizei height)
143 {
144         (*p_glRenderbufferStorageEXT)(target, internalformat, width, height);
145 }
146
147 void glGetRenderbufferParameterivEXT(GLenum target, GLenum pname, GLint * params)
148 {
149         (*p_glGetRenderbufferParameterivEXT)(target, pname, params);
150 }
151
152 GLboolean glIsFramebufferEXT(GLuint framebuffer)
153 {
154         (*p_glIsFramebufferEXT)(framebuffer);
155 }
156
157 void glBindFramebufferEXT(GLenum target, GLuint framebuffer)
158 {
159         (*p_glBindFramebufferEXT)(target, framebuffer);
160 }
161
162 void glDeleteFramebuffersEXT(GLsizei n, const GLuint * framebuffers)
163 {
164         (*p_glDeleteFramebuffersEXT)(n, framebuffers);
165 }
166
167 void glGenFramebuffersEXT(GLsizei n, GLuint * framebuffers)
168 {
169         (*p_glGenFramebuffersEXT)(n, framebuffers);
170 }
171
172 GLenum glCheckFramebufferStatusEXT(GLenum target)
173 {
174         return (*p_glCheckFramebufferStatusEXT)(target);
175 }
176
177 void glFramebufferTexture1DEXT(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level)
178 {
179         (*p_glFramebufferTexture1DEXT)(target, attachment, textarget, texture, level);
180 }
181
182 void glFramebufferTexture2DEXT(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level)
183 {
184         (*p_glFramebufferTexture2DEXT)(target, attachment, textarget, texture, level);
185 }
186
187 void glFramebufferTexture3DEXT(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset)
188 {
189         (*p_glFramebufferTexture3DEXT)(target, attachment, textarget, texture, level, zoffset);
190 }
191
192 void glFramebufferRenderbufferEXT(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer)
193 {
194         (*p_glFramebufferRenderbufferEXT)(target, attachment, renderbuffertarget, renderbuffer);
195 }
196
197 void glGetFramebufferAttachmentParameterivEXT(GLenum target, GLenum attachment, GLenum pname, GLint * params)
198 {
199         (*p_glGetFramebufferAttachmentParameterivEXT)(target, attachment, pname, params);
200 }
201
202 void glGenerateMipmapEXT(GLenum target)
203 {
204         (*p_glGenerateMipmapEXT)(target);
205 }