Acme-MITHALDU-BleedingOpenGL
view release on metacpan or search on metacpan
pogl_gl_top.xs view on Meta::CPAN
#if defined(HAVE_GLUT) || defined(HAVE_FREEGLUT)
RETVAL = 1;
#else
RETVAL = 0;
#endif /* defined HAVE_GLUT or HAVE_FREEGLUT */
OUTPUT:
RETVAL
#// Test for FreeGLUT
int
_have_freeglut()
CODE:
#if defined(HAVE_FREEGLUT)
RETVAL = 1;
#else
RETVAL = 0;
#endif /* defined HAVE_FREEGLUT */
OUTPUT:
RETVAL
#// Test for GLX
int
_have_glx()
CODE:
#ifdef HAVE_GLX
RETVAL = 1;
#else
RETVAL = 0;
#endif /* defined HAVE_GLX */
OUTPUT:
RETVAL
#// Test for GLpc
int
_have_glp()
CODE:
#ifdef HAVE_GLpc
RETVAL = 1;
#else
RETVAL = 0;
#endif /* defined HAVE_GLpc */
OUTPUT:
RETVAL
# /* 13000 lines snipped */
##################### GLU #########################
############################## GLUT #########################
# /* This is assigned to GLX for now. The glp*() functions should be split out */
#ifdef IN_POGL_GLX_XS
# /* The following material is directly copied from Stan Melax's original OpenGL-0.4 */
int
__had_dbuffer_hack()
#ifdef HAVE_GLpc /* GLX */
#// $ID = glpcOpenWindow($x,$y,$w,$h,$pw,$steal,$event_mask,@attribs);
HV *
glpcOpenWindow(x,y,w,h,pw,event_mask,steal, ...)
int x
int y
int w
int h
int pw
long event_mask
int steal
CODE:
{
XEvent event;
Window pwin = (Window)pw;
unsigned int err;
int *attributes = default_attributes + 1;
int *a_buf = NULL;
RETVAL = newHV(); /* Create hash to return GL Object info */
if(items > NUM_ARG){
int i;
a_buf = (int *) malloc((items-NUM_ARG+2) * sizeof(int));
a_buf[0] = GLX_DOUBLEBUFFER; /* Preallocate */
attributes = a_buf + 1;
for (i=NUM_ARG; i<items; i++) {
attributes[i-NUM_ARG] = SvIV(ST(i));
}
attributes[items-NUM_ARG] = None;
}
if (debug) {
int i;
for (i=0; attributes[i] != None; i++) {
printf("att=%d %d\n", i, attributes[i]);
}
}
/* get a connection */
if (!dpy_open) {
dpy = XOpenDisplay(NULL);
dpy_open = 1;
}
if (!dpy) {
croak("ERROR: failed to get an X connection");
} else if (debug) {
printf("Display open %x\n", dpy);
}
/* get an appropriate visual */
vi = glXChooseVisual(dpy, DefaultScreen(dpy), attributes);
if (!vi) { /* Might have happened that one does not
* *need* DOUBLEBUFFER, but the display does
* not provide SINGLEBUFFER; and the semantic
* of GLX_DOUBLEBUFFER is that if it misses,
( run in 3.034 seconds using v1.01-cache-2.11-cpan-99c4e6809bf )