MCPcopy Create free account
hub / github.com/VirtualGL/virtualgl / drawableInit

Function drawableInit

util/glreadtest.cpp:180–243  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

178
179
180void drawableInit(void)
181{
182 int pbattribs[] = { GLX_PBUFFER_WIDTH, 0, GLX_PBUFFER_HEIGHT, 0, None };
183
184 // Use GLX 1.1 functions here in case we're remotely displaying to
185 // something that doesn't support GLX 1.3
186 if(useWindow || usePixmap || useFBO)
187 {
188 if(!(ctx = glXCreateContext(dpy, v, NULL, True)))
189 THROW("Could not create GL context");
190
191 if(usePixmap)
192 {
193 if(!(glxpm = glXCreateGLXPixmap(dpy, v, pm)))
194 THROW("Could not creaate GLX pixmap");
195 }
196 glXMakeCurrent(dpy, usePixmap ? glxpm : win, ctx);
197
198 #ifdef GL_EXT_framebuffer_object
199 if(useFBO)
200 {
201 GLenum format = useAlpha ? GL_RGBA8 : GL_RGB8;
202 if(v->depth == 30) format = useAlpha ? GL_RGB10_A2 : GL_RGB10;
203 glGenFramebuffersEXT(1, &fbo);
204 glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, fbo);
205 if(useRTT)
206 {
207 glGenTextures(1, &texture);
208 glBindTexture(GL_TEXTURE_RECTANGLE_ARB, texture);
209 glTexParameteri(GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_MIN_FILTER,
210 GL_LINEAR);
211 glTexParameteri(GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_MAG_FILTER,
212 GL_LINEAR);
213 glTexImage2D(GL_TEXTURE_RECTANGLE_ARB, 0, format, drawableWidth,
214 drawableHeight, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL);
215 glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT,
216 GL_TEXTURE_RECTANGLE_ARB, texture, 0);
217 }
218 else
219 {
220 glGenRenderbuffersEXT(1, &rbo);
221 glBindRenderbufferEXT(GL_RENDERBUFFER_EXT, rbo);
222 glRenderbufferStorageEXT(GL_RENDERBUFFER_EXT, format, drawableWidth,
223 drawableHeight);
224 glFramebufferRenderbufferEXT(GL_FRAMEBUFFER_EXT,
225 GL_COLOR_ATTACHMENT0_EXT, GL_RENDERBUFFER_EXT, rbo);
226 }
227 if(glCheckFramebufferStatusEXT(GL_FRAMEBUFFER_EXT)
228 != GL_FRAMEBUFFER_COMPLETE_EXT)
229 THROW("Could not create FBO");
230 }
231 #endif
232 return;
233 }
234
235 ctx = glXCreateNewContext(dpy, c, GLX_RGBA_TYPE, NULL, True);
236 if(!ctx) THROW("Could not create GL context");
237

Callers 1

mainFunction · 0.85

Calls 7

glXCreateContextFunction · 0.85
glXCreateGLXPixmapFunction · 0.85
glXMakeCurrentFunction · 0.85
glBindFramebufferEXTFunction · 0.85
glXCreateNewContextFunction · 0.85
glXCreatePbufferFunction · 0.85
glXMakeContextCurrentFunction · 0.85

Tested by

no test coverage detected