Acme-MITHALDU-BleedingOpenGL
view release on metacpan or search on metacpan
pogl_gl_top.xs view on Meta::CPAN
croak("No Window");
} else {
if (debug) printf("win = 0x%x\n", win);
}
XMapWindow(dpy, win);
#ifndef HAVE_GLX /* For OS/2 GLX emulation stuff -chm 2009.09.14 */
/* On OS/2: cannot create a context before mapping something... */
/* create a GLX context */
ctx = glXCreateContext(dpy, vi, 0, GL_TRUE);
if (!ctx)
croak("No context!\n");
LastEventMask = event_mask;
#else /* HAVE_GLX, this is the default branch */
if ( (event_mask & StructureNotifyMask) && !steal ) {
XIfEvent(dpy, &event, WaitForNotify, (char*)win);
}
#endif /* not defined HAVE_GLX */
/* connect the context to the window */
if (!glXMakeCurrent(dpy, win, ctx))
croak("Non current");
if (debug)
printf("Display=0x%x Window=0x%x Context=0x%x\n",dpy, win, ctx);
/* Create the GL object hash information */
hv_store(RETVAL, "Display", strlen("Display"), newSViv(PTR2IV(dpy)), 0);
hv_store(RETVAL, "Window", strlen("Window"), newSViv( (IV) win ), 0);
hv_store(RETVAL, "Context", strlen("Context"), newSViv(PTR2IV(ctx)), 0);
hv_store(RETVAL, "GL_Version",strlen("GL_Version"),
newSVpv((char *) glGetString(GL_VERSION),0),0);
hv_store(RETVAL, "GL_Vendor",strlen("GL_Vendor"),
newSVpv((char *) glGetString(GL_VENDOR),0),0);
hv_store(RETVAL, "GL_Renderer",strlen("GL_Renderer"),
newSVpv((char *) glGetString(GL_RENDERER),0),0);
/* clear the buffer */
glClearColor(0,0,0,1);
while ( (err = glGetError()) != GL_NO_ERROR ) {
printf("ERROR issued in GL %s\n", gluErrorString(err));
}
}
OUTPUT:
RETVAL
#// glpRasterFont(name,base,number,d)
int
glpRasterFont(name,base,number,d)
char *name
int base
int number
Display *d
CODE:
{
XFontStruct *fi;
int lb;
fi = XLoadQueryFont(d,name);
if(fi == NULL) {
die("No font %s found",name);
}
lb = glGenLists(number);
if(lb == 0) {
die("No display lists left for font %s (need %d)",name,number);
}
glXUseXFont(fi->fid, base, number, lb);
RETVAL=lb;
}
OUTPUT:
RETVAL
#// glpPrintString(base,str);
void
glpPrintString(base,str)
int base
char *str
CODE:
{
glPushAttrib(GL_LIST_BIT);
glListBase(base);
glCallLists(strlen(str),GL_UNSIGNED_BYTE,(GLubyte*)str);
glPopAttrib();
}
#// glpDisplay();
Display *
glpDisplay(name)
char *name
CODE:
/* get a connection */
if (!dpy_open) {
dpy = XOpenDisplay(name);
dpy_open = 1;
}
if (!dpy)
croak("No display!");
RETVAL = dpy;
OUTPUT:
RETVAL
#// glpMoveResizeWindow($x, $y, $width, $height[, $winID[, $display]]);
void
glpMoveResizeWindow(x, y, width, height, w=win, d=dpy)
void* d
GLXDrawable w
int x
int y
unsigned int width
unsigned int height
#// glpMoveWindow($x, $y[, $winID[, $display]]);
void
glpMoveWindow(x, y, w=win, d=dpy)
void* d
GLXDrawable w
int x
int y
#// glpResizeWindow($width, $height[, $winID[, $display]])
void
glpResizeWindow(width, height, w=win, d=dpy)
void* d
GLXDrawable w
unsigned int width
( run in 1.661 second using v1.01-cache-2.11-cpan-13bb782fe5a )