added wrappers/helpers for creating/destroying rendering contexts

This commit is contained in:
Brian Paul 2005-04-06 22:41:46 +00:00
parent c3984fc015
commit c61782958b
2 changed files with 45 additions and 1 deletions

View file

@ -9,7 +9,6 @@
* to the GLX_SGIX_fbconfig/pbuffer extensions.
*/
#include <stdio.h>
#include <string.h>
#include "pbutil.h"
@ -293,6 +292,43 @@ PrintFBConfigInfo(Display *dpy, int screen, FBCONFIG config, Bool horizFormat)
GLXContext
CreateContext(Display *dpy, int screen, FBCONFIG config)
{
int pbSupport = QueryPbuffers(dpy, screen);
#if defined(GLX_VERSION_1_3)
if (pbSupport == 1) {
/* GLX 1.3 */
GLXContext c;
c = glXCreateNewContext(dpy, config, GLX_RGBA_TYPE, NULL, True);
if (!c) {
/* try indirect */
c = glXCreateNewContext(dpy, config, GLX_RGBA_TYPE, NULL, False);
}
return c;
}
#endif
#if defined(GLX_SGIX_fbconfig) && defined(GLX_SGIX_pbuffer)
if (pbSupport == 2) {
GLXContext c;
c = glXCreateContextWithConfigSGIX(dpy, config, GLX_RGBA_TYPE_SGIX, NULL, True);
if (!c) {
c = glXCreateContextWithConfigSGIX(dpy, config, GLX_RGBA_TYPE_SGIX, NULL, False);
}
return c;
}
#endif
return 0;
}
void
DestroyContext(Display *dpy, GLXContext ctx)
{
glXDestroyContext(dpy, ctx);
}
/* This is only used by CreatePbuffer() */
static int XErrorFlag = 0;
static int HandleXError(Display *dpy, XErrorEvent *event)

View file

@ -46,6 +46,14 @@ extern XVisualInfo *
GetVisualFromFBConfig(Display *dpy, int screen, FBCONFIG config);
extern GLXContext
CreateContext(Display *dpy, int screen, FBCONFIG config);
extern void
DestroyContext(Display *dpy, GLXContext ctx);
extern PBUFFER
CreatePbuffer(Display *dpy, int screen, FBCONFIG config,
int width, int height, Bool preserve, Bool largest);