/* Last saved: Sun 06 Sep 2009 02:09:56 PM */ /* Copyright (c) 1998 Kenneth Albanowski. All rights reserved. * Copyright (c) 2007 Bob Free. All rights reserved. * Copyright (c) 2009 Chris Marshall. All rights reserved. * This program is free software; you can redistribute it and/or * modify it under the same terms as Perl itself. */ /* OpenGL GLX bindings */ #define IN_POGL_GLX_XS #include #include "pgopogl.h" #ifdef HAVE_GL #include "gl_util.h" /* Note: this is caching procs once for all contexts */ /* !!! This should instead cache per context */ #if defined(_WIN32) || (defined(__CYGWIN__) && defined(HAVE_W32API)) #define loadProc(proc,name) \ { \ if (!proc) \ { \ proc = (void *)wglGetProcAddress(name); \ if (!proc) croak(name " is not supported by this renderer"); \ } \ } #define testProc(proc,name) ((proc) ? 1 : !!(proc = (void *)wglGetProcAddress(name))) #else /* not using WGL */ #define loadProc(proc,name) #define testProc(proc,name) 1 #endif /* not defined _WIN32, __CYGWIN__, and HAVE_W32API */ #endif /* defined HAVE_GL */ #ifdef HAVE_GLX #include "glx_util.h" #endif /* defined HAVE_GLX */ #ifdef HAVE_GLU #include "glu_util.h" #endif /* defined HAVE_GLU */ MODULE = OpenGL::GL::GetPPass PACKAGE = OpenGL #ifdef HAVE_GL #// 1.0 #//# glGetPixelMapfv_c($map, (CPTR)values); void glGetPixelMapfv_c(map, values) GLenum map void * values CODE: glGetPixelMapfv(map, values); #// 1.0 #//# glGetPixelMapuiv_c($map, (CPTR)values); void glGetPixelMapuiv_c(map, values) GLenum map void * values CODE: glGetPixelMapuiv(map, values); #// 1.0 #//# glGetPixelMapusv_c($map, (CPTR)values); void glGetPixelMapusv_c(map, values) GLenum map void * values CODE: glGetPixelMapusv(map, values); #// 1.0 #//# glGetPixelMapfv_s($map, (PACKED)values); void glGetPixelMapfv_s(map, values) GLenum map SV * values CODE: { GLfloat * values_s = EL(values, sizeof(GLfloat)* gl_pixelmap_size(map)); glGetPixelMapfv(map, values_s); } #// 1.0 #//# glGetPixelMapuiv_s($map, (PACKED)values); void glGetPixelMapuiv_s(map, values) GLenum map SV * values CODE: { GLuint * values_s = EL(values, sizeof(GLuint)* gl_pixelmap_size(map)); glGetPixelMapuiv(map, values_s); } #// 1.0 #//# glGetPixelMapusv_s($map, (PACKED)values); void glGetPixelMapusv_s(map, values) GLenum map SV * values CODE: { GLushort * values_s = EL(values, sizeof(GLushort)* gl_pixelmap_size(map)); glGetPixelMapusv(map, values_s); } #// 1.0 #//# @data = glGetPixelMapfv_p($map); void glGetPixelMapfv_p(map) GLenum map CODE: { int count = gl_pixelmap_size(map); GLfloat * values; int i; values = malloc(sizeof(GLfloat) * count); glGetPixelMapfv(map, values); EXTEND(sp, count); for(i=0; ibind); } glIndexPointer(oga->types[0], 0, oga->bind ? 0 : oga->data); #else glIndexPointer(oga->types[0], 0, oga->data); #endif } #endif #// 1.0 #//# glInitNames(); void glInitNames() #ifdef GL_VERSION_1_1 #// 1.1 #//# glInterleavedArrays_c($format, $stride, (CPTR)pointer); void glInterleavedArrays_c(format, stride, pointer) GLenum format GLsizei stride void * pointer CODE: glInterleavedArrays(format, stride, pointer); #endif #// 1.0 #//# glIsEnabled($cap); GLboolean glIsEnabled(cap) GLenum cap #// 1.0 #//# glIsList(list); GLboolean glIsList(list) GLuint list #ifdef GL_VERSION_1_1 #// 1.1 #//# glIsTexture($list); GLboolean glIsTexture(list) GLuint list #endif #// 1.0 #//# glLightf($light, $pname, $param); void glLightf(light, pname, param) GLenum light GLenum pname GLfloat param #// 1.0 #//# glLighti($light, $pname, $param); void glLighti(light, pname, param) GLenum light GLenum pname GLint param #// 1.0 #//# glLightfv_c($light, $pname, (CPTR)params); void glLightfv_c(light, pname, params) GLenum light GLenum pname void * params CODE: glLightfv(light, pname, params); #// 1.0 #//# glLightiv_c($light, $pname, (CPTR)params); void glLightiv_c(light, pname, params) GLenum light GLenum pname void * params CODE: glLightiv(light, pname, params); #// 1.0 #//# glLightfv_s($light, $pname, (PACKED)params); void glLightfv_s(light, pname, params) GLenum light GLenum pname SV * params CODE: { GLfloat * params_s = EL(params, sizeof(GLfloat)*gl_light_count(pname)); glLightfv(light, pname, params_s); } #// 1.0 #//# glLightiv_s($light, $pname, (PACKED)params); void glLightiv_s(light, pname, params) GLenum light GLenum pname SV * params CODE: { GLint * params_s = EL(params, sizeof(GLint)*gl_light_count(pname)); glLightiv(light, pname, params_s); } #// 1.0 #//# glLightfv_p($light, $pname, @params); void glLightfv_p(light, pname, ...) GLenum light GLenum pname CODE: { GLfloat p[MAX_GL_LIGHT_COUNT]; int i; if ((items-2) != gl_light_count(pname)) croak("Incorrect number of arguments"); for(i=2;ibind); } glNormalPointer(oga->types[0], 0, oga->bind ? 0 : oga->data); #else glNormalPointer(oga->types[0], 0, oga->data); #endif } #endif #// 1.0 #//# glOrtho($left, $right, $bottom, $top, $zNear, $zFar); void glOrtho(left, right, bottom, top, zNear, zFar) GLdouble left GLdouble right GLdouble bottom GLdouble top GLdouble zNear GLdouble zFar #// 1.0 #//# glPassThrough($token); void glPassThrough(token) GLfloat token #endif /* HAVE_GL */