/*
 * This file was generated automatically by ExtUtils::ParseXS version 3.51 from the
 * contents of V2.xs. Do not edit this file, edit V2.xs instead.
 *
 *    ANY CHANGES MADE HERE WILL BE LOST!
 *
 */

#line 1 "lib/OpenGL/V2.xs"
/*  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.
 */

#include <stdio.h>

#include "pgopogl.h"

#ifdef HAVE_GL
#include "gl_util.h"
#endif /* defined HAVE_GL */

#line 26 "lib/OpenGL/V2.c"
#ifndef PERL_UNUSED_VAR
#  define PERL_UNUSED_VAR(var) if (0) var = var
#endif

#ifndef dVAR
#  define dVAR		dNOOP
#endif


/* This stuff is not part of the API! You have been warned. */
#ifndef PERL_VERSION_DECIMAL
#  define PERL_VERSION_DECIMAL(r,v,s) (r*1000000 + v*1000 + s)
#endif
#ifndef PERL_DECIMAL_VERSION
#  define PERL_DECIMAL_VERSION \
	  PERL_VERSION_DECIMAL(PERL_REVISION,PERL_VERSION,PERL_SUBVERSION)
#endif
#ifndef PERL_VERSION_GE
#  define PERL_VERSION_GE(r,v,s) \
	  (PERL_DECIMAL_VERSION >= PERL_VERSION_DECIMAL(r,v,s))
#endif
#ifndef PERL_VERSION_LE
#  define PERL_VERSION_LE(r,v,s) \
	  (PERL_DECIMAL_VERSION <= PERL_VERSION_DECIMAL(r,v,s))
#endif

/* XS_INTERNAL is the explicit static-linkage variant of the default
 * XS macro.
 *
 * XS_EXTERNAL is the same as XS_INTERNAL except it does not include
 * "STATIC", ie. it exports XSUB symbols. You probably don't want that
 * for anything but the BOOT XSUB.
 *
 * See XSUB.h in core!
 */


/* TODO: This might be compatible further back than 5.10.0. */
#if PERL_VERSION_GE(5, 10, 0) && PERL_VERSION_LE(5, 15, 1)
#  undef XS_EXTERNAL
#  undef XS_INTERNAL
#  if defined(__CYGWIN__) && defined(USE_DYNAMIC_LOADING)
#    define XS_EXTERNAL(name) __declspec(dllexport) XSPROTO(name)
#    define XS_INTERNAL(name) STATIC XSPROTO(name)
#  endif
#  if defined(__SYMBIAN32__)
#    define XS_EXTERNAL(name) EXPORT_C XSPROTO(name)
#    define XS_INTERNAL(name) EXPORT_C STATIC XSPROTO(name)
#  endif
#  ifndef XS_EXTERNAL
#    if defined(HASATTRIBUTE_UNUSED) && !defined(__cplusplus)
#      define XS_EXTERNAL(name) void name(pTHX_ CV* cv __attribute__unused__)
#      define XS_INTERNAL(name) STATIC void name(pTHX_ CV* cv __attribute__unused__)
#    else
#      ifdef __cplusplus
#        define XS_EXTERNAL(name) extern "C" XSPROTO(name)
#        define XS_INTERNAL(name) static XSPROTO(name)
#      else
#        define XS_EXTERNAL(name) XSPROTO(name)
#        define XS_INTERNAL(name) STATIC XSPROTO(name)
#      endif
#    endif
#  endif
#endif

/* perl >= 5.10.0 && perl <= 5.15.1 */


/* The XS_EXTERNAL macro is used for functions that must not be static
 * like the boot XSUB of a module. If perl didn't have an XS_EXTERNAL
 * macro defined, the best we can do is assume XS is the same.
 * Dito for XS_INTERNAL.
 */
#ifndef XS_EXTERNAL
#  define XS_EXTERNAL(name) XS(name)
#endif
#ifndef XS_INTERNAL
#  define XS_INTERNAL(name) XS(name)
#endif

/* Now, finally, after all this mess, we want an ExtUtils::ParseXS
 * internal macro that we're free to redefine for varying linkage due
 * to the EXPORT_XSUB_SYMBOLS XS keyword. This is internal, use
 * XS_EXTERNAL(name) or XS_INTERNAL(name) in your code if you need to!
 */

#undef XS_EUPXS
#if defined(PERL_EUPXS_ALWAYS_EXPORT)
#  define XS_EUPXS(name) XS_EXTERNAL(name)
#else
   /* default to internal */
#  define XS_EUPXS(name) XS_INTERNAL(name)
#endif

#ifndef PERL_ARGS_ASSERT_CROAK_XS_USAGE
#define PERL_ARGS_ASSERT_CROAK_XS_USAGE assert(cv); assert(params)

/* prototype to pass -Wmissing-prototypes */
STATIC void
S_croak_xs_usage(const CV *const cv, const char *const params);

STATIC void
S_croak_xs_usage(const CV *const cv, const char *const params)
{
    const GV *const gv = CvGV(cv);

    PERL_ARGS_ASSERT_CROAK_XS_USAGE;

    if (gv) {
        const char *const gvname = GvNAME(gv);
        const HV *const stash = GvSTASH(gv);
        const char *const hvname = stash ? HvNAME(stash) : NULL;

        if (hvname)
	    Perl_croak_nocontext("Usage: %s::%s(%s)", hvname, gvname, params);
        else
	    Perl_croak_nocontext("Usage: %s(%s)", gvname, params);
    } else {
        /* Pants. I don't think that it should be possible to get here. */
	Perl_croak_nocontext("Usage: CODE(0x%" UVxf ")(%s)", PTR2UV(cv), params);
    }
}
#undef  PERL_ARGS_ASSERT_CROAK_XS_USAGE

#define croak_xs_usage        S_croak_xs_usage

#endif

/* NOTE: the prototype of newXSproto() is different in versions of perls,
 * so we define a portable version of newXSproto()
 */
#ifdef newXS_flags
#define newXSproto_portable(name, c_impl, file, proto) newXS_flags(name, c_impl, file, proto, 0)
#else
#define newXSproto_portable(name, c_impl, file, proto) (PL_Sv=(SV*)newXS(name, c_impl, file), sv_setpv(PL_Sv, proto), (CV*)PL_Sv)
#endif /* !defined(newXS_flags) */

#if PERL_VERSION_LE(5, 21, 5)
#  define newXS_deffile(a,b) Perl_newXS(aTHX_ a,b,file)
#else
#  define newXS_deffile(a,b) Perl_newXS_deffile(aTHX_ a,b)
#endif

#line 170 "lib/OpenGL/V2.c"
#ifdef HAVE_GL
#ifdef GL_VERSION_2_0
#define XSubPPtmpAAAA 1


XS_EUPXS(XS_OpenGL_glDrawBuffers_c); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glDrawBuffers_c)
{
    dVAR; dXSARGS;
    if (items != 2)
       croak_xs_usage(cv,  "n, buffers");
    {
	GLsizei	n = (int)SvIV(ST(0))
;
	void *	buffers = INT2PTR(void *,SvIV(ST(1)))
;
#line 28 "lib/OpenGL/V2.xs"
	{
		glDrawBuffers(n,buffers);
	}
#line 191 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glDrawBuffers_s); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glDrawBuffers_s)
{
    dVAR; dXSARGS;
    if (items != 2)
       croak_xs_usage(cv,  "n, buffers");
    {
	GLsizei	n = (int)SvIV(ST(0))
;
	SV *	buffers = ST(1)
;
#line 38 "lib/OpenGL/V2.xs"
	{
		void * buffers_s = EL(buffers, sizeof(GLuint)*n);
		glDrawBuffers(n,buffers_s);
	}
#line 213 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glDrawBuffers_p); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glDrawBuffers_p)
{
    dVAR; dXSARGS;
    PERL_UNUSED_VAR(cv); /* -W */
    PERL_UNUSED_VAR(items); /* -W */
    {
#line 47 "lib/OpenGL/V2.xs"
	{
		if (items) {
			GLuint * list = malloc(sizeof(GLuint) * items);
			int i;

			for (i=0;i<items;i++)
				list[i] = SvIV(ST(i));

			glDrawBuffers(items, list);
			free(list);
		}
	}
#line 239 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glAttachShader); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glAttachShader)
{
    dVAR; dXSARGS;
    if (items != 2)
       croak_xs_usage(cv,  "program, shader");
    {
	GLuint	program = (unsigned int)SvUV(ST(0))
;
	GLuint	shader = (unsigned int)SvUV(ST(1))
;
#line 66 "lib/OpenGL/V2.xs"
		loadProc(glAttachShader,"glAttachShader");
#line 258 "lib/OpenGL/V2.c"
#line 68 "lib/OpenGL/V2.xs"
	{
		glAttachShader(program,shader);
	}
#line 263 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glDeleteShader); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glDeleteShader)
{
    dVAR; dXSARGS;
    if (items != 1)
       croak_xs_usage(cv,  "shader");
    {
	GLuint	shader = (unsigned int)SvUV(ST(0))
;
#line 77 "lib/OpenGL/V2.xs"
		loadProc(glDeleteShader,"glDeleteShader");
#line 280 "lib/OpenGL/V2.c"
#line 79 "lib/OpenGL/V2.xs"
	{
		glDeleteShader(shader);
	}
#line 285 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glGetShaderiv_p); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glGetShaderiv_p)
{
    dVAR; dXSARGS;
    if (items != 2)
       croak_xs_usage(cv,  "target, pname");
    {
	GLenum	target = (int)SvIV(ST(0))
;
	GLenum	pname = (int)SvIV(ST(1))
;
	GLuint	RETVAL;
	dXSTARG;
#line 89 "lib/OpenGL/V2.xs"
		loadProc(glGetShaderiv,"glGetShaderiv");
#line 306 "lib/OpenGL/V2.c"
#line 91 "lib/OpenGL/V2.xs"
	{
		GLuint param;
		glGetShaderiv(target,pname,(void *)&param);
		RETVAL = param;
	}
#line 313 "lib/OpenGL/V2.c"
	XSprePUSH;
	PUSHu((UV)RETVAL);
    }
    XSRETURN(1);
}


XS_EUPXS(XS_OpenGL_glGetShaderInfoLog_p); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glGetShaderInfoLog_p)
{
    dVAR; dXSARGS;
    if (items != 1)
       croak_xs_usage(cv,  "shader");
    {
	GLuint	shader = (unsigned int)SvUV(ST(0))
;
	SV *	RETVAL;
#line 104 "lib/OpenGL/V2.xs"
		loadProc(glGetShaderiv,"glGetShaderiv");
		loadProc(glGetShaderInfoLog,"glGetShaderInfoLog");
#line 334 "lib/OpenGL/V2.c"
#line 107 "lib/OpenGL/V2.xs"
	{
		GLint infoLogLength;
		glGetShaderiv(shader,GL_INFO_LOG_LENGTH,(GLvoid *)&infoLogLength);
		if (infoLogLength)
		{
			GLint length;
			GLchar * infoLog = malloc(infoLogLength+1);
			glGetShaderInfoLog(shader,infoLogLength,&length,infoLog);
			infoLog[length] = 0;
			if (*infoLog)
				RETVAL = newSVpv(infoLog, 0);
			else
				RETVAL = newSVsv(&PL_sv_undef);
			free(infoLog);
		}
		else
		{
			RETVAL = newSVsv(&PL_sv_undef);
		}
	}
#line 356 "lib/OpenGL/V2.c"
	RETVAL = sv_2mortal(RETVAL);
	ST(0) = RETVAL;
    }
    XSRETURN(1);
}


XS_EUPXS(XS_OpenGL_glGetProgramiv_p); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glGetProgramiv_p)
{
    dVAR; dXSARGS;
    if (items != 2)
       croak_xs_usage(cv,  "target, pname");
    {
	GLenum	target = (int)SvIV(ST(0))
;
	GLenum	pname = (int)SvIV(ST(1))
;
	GLuint	RETVAL;
	dXSTARG;
#line 136 "lib/OpenGL/V2.xs"
		loadProc(glGetProgramiv,"glGetProgramiv");
#line 379 "lib/OpenGL/V2.c"
#line 138 "lib/OpenGL/V2.xs"
	{
		GLuint param;
		glGetProgramiv(target,pname,(void *)&param);
		RETVAL = param;
	}
#line 386 "lib/OpenGL/V2.c"
	XSprePUSH;
	PUSHu((UV)RETVAL);
    }
    XSRETURN(1);
}

#endif // GL_VERSION_2_0
#ifdef GL_ARB_vertex_program
#define XSubPPtmpAAAB 1


XS_EUPXS(XS_OpenGL_glProgramStringARB_c); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glProgramStringARB_c)
{
    dVAR; dXSARGS;
    if (items != 4)
       croak_xs_usage(cv,  "target, format, len, string");
    {
	GLenum	target = (int)SvIV(ST(0))
;
	GLenum	format = (int)SvIV(ST(1))
;
	GLsizei	len = (int)SvIV(ST(2))
;
	void *	string = INT2PTR(void *,SvIV(ST(3)))
;
#line 158 "lib/OpenGL/V2.xs"
		loadProc(glProgramStringARB,"glProgramStringARB");
#line 415 "lib/OpenGL/V2.c"
#line 160 "lib/OpenGL/V2.xs"
		glProgramStringARB(target,format,len,string);
#line 418 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glProgramStringARB_s); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glProgramStringARB_s)
{
    dVAR; dXSARGS;
    if (items != 4)
       croak_xs_usage(cv,  "target, format, len, string");
    {
	GLenum	target = (int)SvIV(ST(0))
;
	GLenum	format = (int)SvIV(ST(1))
;
	GLsizei	len = (int)SvIV(ST(2))
;
	SV *	string = ST(3)
;
#line 170 "lib/OpenGL/V2.xs"
		loadProc(glProgramStringARB,"glProgramStringARB");
#line 441 "lib/OpenGL/V2.c"
#line 172 "lib/OpenGL/V2.xs"
	{
		GLvoid * string_s = EL(string, len);
		glProgramStringARB(target,format,len,string_s);
	}
#line 447 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glProgramStringARB_p); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glProgramStringARB_p)
{
    dVAR; dXSARGS;
    if (items != 2)
       croak_xs_usage(cv,  "target, string");
    {
	GLenum	target = (int)SvIV(ST(0))
;
	char *	string = (char *)SvPV_nolen(ST(1))
;
#line 184 "lib/OpenGL/V2.xs"
		loadProc(glProgramStringARB,"glProgramStringARB");
#line 466 "lib/OpenGL/V2.c"
#line 186 "lib/OpenGL/V2.xs"
	{
		int len = strlen(string);
		glProgramStringARB(target,GL_PROGRAM_FORMAT_ASCII_ARB,len,string);
	}
#line 472 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glBindProgramARB); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glBindProgramARB)
{
    dVAR; dXSARGS;
    if (items != 2)
       croak_xs_usage(cv,  "target, program");
    {
	GLenum	target = (int)SvIV(ST(0))
;
	GLuint	program = (unsigned int)SvUV(ST(1))
;
#line 197 "lib/OpenGL/V2.xs"
		loadProc(glBindProgramARB,"glBindProgramARB");
#line 491 "lib/OpenGL/V2.c"

	glBindProgramARB(target, program);
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glDeleteProgramsARB_c); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glDeleteProgramsARB_c)
{
    dVAR; dXSARGS;
    if (items != 2)
       croak_xs_usage(cv,  "n, programs");
    {
	GLsizei	n = (int)SvIV(ST(0))
;
	void *	programs = INT2PTR(void *,SvIV(ST(1)))
;
#line 205 "lib/OpenGL/V2.xs"
		loadProc(glDeleteProgramsARB,"glDeleteProgramsARB");
#line 512 "lib/OpenGL/V2.c"
#line 207 "lib/OpenGL/V2.xs"
	{
		glDeleteProgramsARB(n,(GLuint*)programs);
	}
#line 517 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glDeleteProgramsARB_s); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glDeleteProgramsARB_s)
{
    dVAR; dXSARGS;
    if (items != 2)
       croak_xs_usage(cv,  "n, programs");
    {
	GLsizei	n = (int)SvIV(ST(0))
;
	SV *	programs = ST(1)
;
#line 217 "lib/OpenGL/V2.xs"
		loadProc(glDeleteProgramsARB,"glDeleteProgramsARB");
#line 536 "lib/OpenGL/V2.c"
#line 219 "lib/OpenGL/V2.xs"
	{
		GLuint * programs_s = EL(programs, sizeof(GLuint)*n);
		glDeleteProgramsARB(n,programs_s);
	}
#line 542 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glDeleteProgramsARB_p); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glDeleteProgramsARB_p)
{
    dVAR; dXSARGS;
    PERL_UNUSED_VAR(cv); /* -W */
    PERL_UNUSED_VAR(items); /* -W */
    {
#line 228 "lib/OpenGL/V2.xs"
		loadProc(glDeleteProgramsARB,"glDeleteProgramsARB");
#line 557 "lib/OpenGL/V2.c"
#line 230 "lib/OpenGL/V2.xs"
	{
		if (items) {
			GLuint * list = malloc(sizeof(GLuint) * items);
			int i;

			for (i=0;i<items;i++)
				list[i] = SvIV(ST(i));

			glDeleteProgramsARB(items, list);
			free(list);
		}
	}
#line 571 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glGenProgramsARB_c); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glGenProgramsARB_c)
{
    dVAR; dXSARGS;
    if (items != 2)
       croak_xs_usage(cv,  "n, programs");
    {
	GLsizei	n = (int)SvIV(ST(0))
;
	void *	programs = INT2PTR(void *,SvIV(ST(1)))
;
#line 249 "lib/OpenGL/V2.xs"
		loadProc(glGenProgramsARB,"glGenProgramsARB");
#line 590 "lib/OpenGL/V2.c"
#line 251 "lib/OpenGL/V2.xs"
	{
		glGenProgramsARB(n,(GLuint*)programs);
	}
#line 595 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glGenProgramsARB_s); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glGenProgramsARB_s)
{
    dVAR; dXSARGS;
    if (items != 2)
       croak_xs_usage(cv,  "n, programs");
    {
	GLsizei	n = (int)SvIV(ST(0))
;
	SV *	programs = ST(1)
;
#line 261 "lib/OpenGL/V2.xs"
		loadProc(glGenProgramsARB,"glGenProgramsARB");
#line 614 "lib/OpenGL/V2.c"
#line 263 "lib/OpenGL/V2.xs"
	{
		GLuint * programs_s = EL(programs, sizeof(GLuint)*n);
		glGenProgramsARB(n, programs_s);
	}
#line 620 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glGenProgramsARB_p); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glGenProgramsARB_p)
{
    dVAR; dXSARGS;
    if (items != 1)
       croak_xs_usage(cv,  "n");
    PERL_UNUSED_VAR(ax); /* -Wall */
    SP -= items;
    {
	GLsizei	n = (int)SvIV(ST(0))
;
#line 273 "lib/OpenGL/V2.xs"
		loadProc(glGenProgramsARB,"glGenProgramsARB");
#line 639 "lib/OpenGL/V2.c"
#line 275 "lib/OpenGL/V2.xs"
	if (n)
	{
		GLuint * programs = malloc(sizeof(GLuint) * n);
		int i;

		glGenProgramsARB(n, programs);

		EXTEND(sp, n);
		for(i=0;i<n;i++)
			PUSHs(sv_2mortal(newSViv(programs[i])));

		free(programs);
	}
#line 654 "lib/OpenGL/V2.c"
	PUTBACK;
	return;
    }
}


XS_EUPXS(XS_OpenGL_glProgramEnvParameter4dARB); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glProgramEnvParameter4dARB)
{
    dVAR; dXSARGS;
    if (items != 6)
       croak_xs_usage(cv,  "target, index, x, y, z, w");
    {
	GLenum	target = (int)SvIV(ST(0))
;
	GLuint	index = (unsigned int)SvUV(ST(1))
;
	GLdouble	x = (double)SvNV(ST(2))
;
	GLdouble	y = (double)SvNV(ST(3))
;
	GLdouble	z = (double)SvNV(ST(4))
;
	GLdouble	w = (double)SvNV(ST(5))
;
#line 299 "lib/OpenGL/V2.xs"
		loadProc(glProgramEnvParameter4dARB,"glProgramEnvParameter4dARB");
#line 682 "lib/OpenGL/V2.c"

	glProgramEnvParameter4dARB(target, index, x, y, z, w);
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glProgramEnvParameter4dvARB_c); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glProgramEnvParameter4dvARB_c)
{
    dVAR; dXSARGS;
    if (items != 3)
       croak_xs_usage(cv,  "target, index, v");
    {
	GLenum	target = (int)SvIV(ST(0))
;
	GLuint	index = (unsigned int)SvUV(ST(1))
;
	void *	v = INT2PTR(void *,SvIV(ST(2)))
;
#line 308 "lib/OpenGL/V2.xs"
		loadProc(glProgramEnvParameter4dvARB,"glProgramEnvParameter4dvARB");
#line 705 "lib/OpenGL/V2.c"
#line 310 "lib/OpenGL/V2.xs"
		glProgramEnvParameter4dvARB(target,index,(GLdouble*)v);
#line 708 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glProgramEnvParameter4dvARB_s); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glProgramEnvParameter4dvARB_s)
{
    dVAR; dXSARGS;
    if (items != 3)
       croak_xs_usage(cv,  "target, index, v");
    {
	GLenum	target = (int)SvIV(ST(0))
;
	GLuint	index = (unsigned int)SvUV(ST(1))
;
	SV *	v = ST(2)
;
#line 319 "lib/OpenGL/V2.xs"
		loadProc(glProgramEnvParameter4dvARB,"glProgramEnvParameter4dvARB");
#line 729 "lib/OpenGL/V2.c"
#line 321 "lib/OpenGL/V2.xs"
	{
		GLdouble * v_s = EL(v, sizeof(GLdouble)*4);
		glProgramEnvParameter4dvARB(target,index,v_s);
	}
#line 735 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glProgramEnvParameter4dvARB_p); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glProgramEnvParameter4dvARB_p)
{
    dVAR; dXSARGS;
    if (items != 6)
       croak_xs_usage(cv,  "target, index, x, y, z, w");
    {
	GLenum	target = (int)SvIV(ST(0))
;
	GLuint	index = (unsigned int)SvUV(ST(1))
;
	GLdouble	x = (double)SvNV(ST(2))
;
	GLdouble	y = (double)SvNV(ST(3))
;
	GLdouble	z = (double)SvNV(ST(4))
;
	GLdouble	w = (double)SvNV(ST(5))
;
#line 337 "lib/OpenGL/V2.xs"
		loadProc(glProgramEnvParameter4dvARB,"glProgramEnvParameter4dvARB");
#line 762 "lib/OpenGL/V2.c"
#line 339 "lib/OpenGL/V2.xs"
	{
		GLdouble param[4];
		param[0] = x;
		param[1] = y;
		param[2] = z;
		param[3] = w;
		glProgramEnvParameter4dvARB(target,index,param);
	}
#line 772 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glProgramEnvParameter4fARB); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glProgramEnvParameter4fARB)
{
    dVAR; dXSARGS;
    if (items != 6)
       croak_xs_usage(cv,  "target, index, x, y, z, w");
    {
	GLenum	target = (int)SvIV(ST(0))
;
	GLuint	index = (unsigned int)SvUV(ST(1))
;
	GLfloat	x = (float)SvNV(ST(2))
;
	GLfloat	y = (float)SvNV(ST(3))
;
	GLfloat	z = (float)SvNV(ST(4))
;
	GLfloat	w = (float)SvNV(ST(5))
;
#line 358 "lib/OpenGL/V2.xs"
		loadProc(glProgramEnvParameter4fARB,"glProgramEnvParameter4fARB");
#line 799 "lib/OpenGL/V2.c"

	glProgramEnvParameter4fARB(target, index, x, y, z, w);
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glProgramEnvParameter4fvARB_c); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glProgramEnvParameter4fvARB_c)
{
    dVAR; dXSARGS;
    if (items != 3)
       croak_xs_usage(cv,  "target, index, v");
    {
	GLenum	target = (int)SvIV(ST(0))
;
	GLuint	index = (unsigned int)SvUV(ST(1))
;
	void *	v = INT2PTR(void *,SvIV(ST(2)))
;
#line 367 "lib/OpenGL/V2.xs"
		loadProc(glProgramEnvParameter4fvARB,"glProgramEnvParameter4fvARB");
#line 822 "lib/OpenGL/V2.c"
#line 369 "lib/OpenGL/V2.xs"
		glProgramEnvParameter4fvARB(target,index,(GLfloat*)v);
#line 825 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glProgramEnvParameter4fvARB_s); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glProgramEnvParameter4fvARB_s)
{
    dVAR; dXSARGS;
    if (items != 3)
       croak_xs_usage(cv,  "target, index, v");
    {
	GLenum	target = (int)SvIV(ST(0))
;
	GLuint	index = (unsigned int)SvUV(ST(1))
;
	SV *	v = ST(2)
;
#line 378 "lib/OpenGL/V2.xs"
		loadProc(glProgramEnvParameter4fvARB,"glProgramEnvParameter4fvARB");
#line 846 "lib/OpenGL/V2.c"
#line 380 "lib/OpenGL/V2.xs"
	{
		GLfloat * v_s = EL(v, sizeof(GLfloat)*4);
		glProgramEnvParameter4fvARB(target,index,v_s);
	}
#line 852 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glProgramEnvParameter4fvARB_p); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glProgramEnvParameter4fvARB_p)
{
    dVAR; dXSARGS;
    if (items != 6)
       croak_xs_usage(cv,  "target, index, x, y, z, w");
    {
	GLenum	target = (int)SvIV(ST(0))
;
	GLuint	index = (unsigned int)SvUV(ST(1))
;
	GLfloat	x = (float)SvNV(ST(2))
;
	GLfloat	y = (float)SvNV(ST(3))
;
	GLfloat	z = (float)SvNV(ST(4))
;
	GLfloat	w = (float)SvNV(ST(5))
;
#line 396 "lib/OpenGL/V2.xs"
		loadProc(glProgramEnvParameter4fvARB,"glProgramEnvParameter4fvARB");
#line 879 "lib/OpenGL/V2.c"
#line 398 "lib/OpenGL/V2.xs"
	{
		GLfloat param[4];
		param[0] = x;
		param[1] = y;
		param[2] = z;
		param[3] = w;
		glProgramEnvParameter4fvARB(target,index,param);
	}
#line 889 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glProgramLocalParameter4dARB); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glProgramLocalParameter4dARB)
{
    dVAR; dXSARGS;
    if (items != 6)
       croak_xs_usage(cv,  "target, index, x, y, z, w");
    {
	GLenum	target = (int)SvIV(ST(0))
;
	GLuint	index = (unsigned int)SvUV(ST(1))
;
	GLdouble	x = (double)SvNV(ST(2))
;
	GLdouble	y = (double)SvNV(ST(3))
;
	GLdouble	z = (double)SvNV(ST(4))
;
	GLdouble	w = (double)SvNV(ST(5))
;
#line 417 "lib/OpenGL/V2.xs"
		loadProc(glProgramLocalParameter4dARB,"glProgramLocalParameter4dARB");
#line 916 "lib/OpenGL/V2.c"

	glProgramLocalParameter4dARB(target, index, x, y, z, w);
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glProgramLocalParameter4dvARB_c); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glProgramLocalParameter4dvARB_c)
{
    dVAR; dXSARGS;
    if (items != 3)
       croak_xs_usage(cv,  "target, index, v");
    {
	GLenum	target = (int)SvIV(ST(0))
;
	GLuint	index = (unsigned int)SvUV(ST(1))
;
	void *	v = INT2PTR(void *,SvIV(ST(2)))
;
#line 426 "lib/OpenGL/V2.xs"
		loadProc(glProgramLocalParameter4dvARB,"glProgramLocalParameter4dvARB");
#line 939 "lib/OpenGL/V2.c"
#line 428 "lib/OpenGL/V2.xs"
		glProgramLocalParameter4dvARB(target,index,(GLdouble*)v);
#line 942 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glProgramLocalParameter4dvARB_s); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glProgramLocalParameter4dvARB_s)
{
    dVAR; dXSARGS;
    if (items != 3)
       croak_xs_usage(cv,  "target, index, v");
    {
	GLenum	target = (int)SvIV(ST(0))
;
	GLuint	index = (unsigned int)SvUV(ST(1))
;
	SV *	v = ST(2)
;
#line 437 "lib/OpenGL/V2.xs"
		loadProc(glProgramLocalParameter4dvARB,"glProgramLocalParameter4dvARB");
#line 963 "lib/OpenGL/V2.c"
#line 439 "lib/OpenGL/V2.xs"
	{
		GLdouble * v_s = EL(v, sizeof(GLdouble)*4);
		glProgramLocalParameter4dvARB(target,index,v_s);
	}
#line 969 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glProgramLocalParameter4dvARB_p); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glProgramLocalParameter4dvARB_p)
{
    dVAR; dXSARGS;
    if (items != 6)
       croak_xs_usage(cv,  "target, index, x, y, z, w");
    {
	GLenum	target = (int)SvIV(ST(0))
;
	GLuint	index = (unsigned int)SvUV(ST(1))
;
	GLdouble	x = (double)SvNV(ST(2))
;
	GLdouble	y = (double)SvNV(ST(3))
;
	GLdouble	z = (double)SvNV(ST(4))
;
	GLdouble	w = (double)SvNV(ST(5))
;
#line 455 "lib/OpenGL/V2.xs"
		loadProc(glProgramLocalParameter4dvARB,"glProgramLocalParameter4dvARB");
#line 996 "lib/OpenGL/V2.c"
#line 457 "lib/OpenGL/V2.xs"
	{
		GLdouble param[4];
		param[0] = x;
		param[1] = y;
		param[2] = z;
		param[3] = w;
		glProgramLocalParameter4dvARB(target,index,param);
	}
#line 1006 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glProgramLocalParameter4fARB); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glProgramLocalParameter4fARB)
{
    dVAR; dXSARGS;
    if (items != 6)
       croak_xs_usage(cv,  "target, index, x, y, z, w");
    {
	GLenum	target = (int)SvIV(ST(0))
;
	GLuint	index = (unsigned int)SvUV(ST(1))
;
	GLfloat	x = (float)SvNV(ST(2))
;
	GLfloat	y = (float)SvNV(ST(3))
;
	GLfloat	z = (float)SvNV(ST(4))
;
	GLfloat	w = (float)SvNV(ST(5))
;
#line 476 "lib/OpenGL/V2.xs"
		loadProc(glProgramLocalParameter4fARB,"glProgramLocalParameter4fARB");
#line 1033 "lib/OpenGL/V2.c"

	glProgramLocalParameter4fARB(target, index, x, y, z, w);
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glProgramLocalParameter4fvARB_c); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glProgramLocalParameter4fvARB_c)
{
    dVAR; dXSARGS;
    if (items != 3)
       croak_xs_usage(cv,  "target, index, v");
    {
	GLenum	target = (int)SvIV(ST(0))
;
	GLuint	index = (unsigned int)SvUV(ST(1))
;
	void *	v = INT2PTR(void *,SvIV(ST(2)))
;
#line 485 "lib/OpenGL/V2.xs"
		loadProc(glProgramLocalParameter4fvARB,"glProgramLocalParameter4fvARB");
#line 1056 "lib/OpenGL/V2.c"
#line 487 "lib/OpenGL/V2.xs"
		glProgramLocalParameter4fvARB(target,index,(GLfloat*)v);
#line 1059 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glProgramLocalParameter4fvARB_s); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glProgramLocalParameter4fvARB_s)
{
    dVAR; dXSARGS;
    if (items != 3)
       croak_xs_usage(cv,  "target, index, v");
    {
	GLenum	target = (int)SvIV(ST(0))
;
	GLuint	index = (unsigned int)SvUV(ST(1))
;
	SV *	v = ST(2)
;
#line 496 "lib/OpenGL/V2.xs"
		loadProc(glProgramLocalParameter4fvARB,"glProgramLocalParameter4fvARB");
#line 1080 "lib/OpenGL/V2.c"
#line 498 "lib/OpenGL/V2.xs"
	{
		GLfloat * v_s = EL(v, sizeof(GLfloat)*4);
		glProgramLocalParameter4fvARB(target,index,v_s);
	}
#line 1086 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glProgramLocalParameter4fvARB_p); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glProgramLocalParameter4fvARB_p)
{
    dVAR; dXSARGS;
    if (items != 6)
       croak_xs_usage(cv,  "target, index, x, y, z, w");
    {
	GLenum	target = (int)SvIV(ST(0))
;
	GLuint	index = (unsigned int)SvUV(ST(1))
;
	GLfloat	x = (float)SvNV(ST(2))
;
	GLfloat	y = (float)SvNV(ST(3))
;
	GLfloat	z = (float)SvNV(ST(4))
;
	GLfloat	w = (float)SvNV(ST(5))
;
#line 514 "lib/OpenGL/V2.xs"
		loadProc(glProgramLocalParameter4fvARB,"glProgramLocalParameter4fvARB");
#line 1113 "lib/OpenGL/V2.c"
#line 516 "lib/OpenGL/V2.xs"
	{
		GLfloat param[4];
		param[0] = x;
		param[1] = y;
		param[2] = z;
		param[3] = w;
		glProgramLocalParameter4fvARB(target,index,param);
	}
#line 1123 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glGetProgramEnvParameterdvARB_c); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glGetProgramEnvParameterdvARB_c)
{
    dVAR; dXSARGS;
    if (items != 3)
       croak_xs_usage(cv,  "target, index, params");
    {
	GLenum	target = (int)SvIV(ST(0))
;
	GLint	index = (int)SvIV(ST(1))
;
	void *	params = INT2PTR(void *,SvIV(ST(2)))
;
#line 532 "lib/OpenGL/V2.xs"
		loadProc(glGetProgramEnvParameterdvARB,"glGetProgramEnvParameterdvARB");
#line 1144 "lib/OpenGL/V2.c"
#line 534 "lib/OpenGL/V2.xs"
		glGetProgramEnvParameterdvARB(target,index,(GLdouble*)params);
#line 1147 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glGetProgramEnvParameterdvARB_s); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glGetProgramEnvParameterdvARB_s)
{
    dVAR; dXSARGS;
    if (items != 3)
       croak_xs_usage(cv,  "target, index, params");
    {
	GLenum	target = (int)SvIV(ST(0))
;
	GLint	index = (int)SvIV(ST(1))
;
	SV *	params = ST(2)
;
#line 543 "lib/OpenGL/V2.xs"
		loadProc(glGetProgramEnvParameterdvARB,"glGetProgramEnvParameterdvARB");
#line 1168 "lib/OpenGL/V2.c"
#line 545 "lib/OpenGL/V2.xs"
	{
		GLdouble * params_s = EL(params, sizeof(GLdouble) * 4);
		glGetProgramEnvParameterdvARB(target,index,params_s);
	}
#line 1174 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glGetProgramEnvParameterdvARB_p); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glGetProgramEnvParameterdvARB_p)
{
    dVAR; dXSARGS;
    if (items != 2)
       croak_xs_usage(cv,  "target, index");
    PERL_UNUSED_VAR(ax); /* -Wall */
    SP -= items;
    {
	GLenum	target = (int)SvIV(ST(0))
;
	GLint	index = (int)SvIV(ST(1))
;
#line 556 "lib/OpenGL/V2.xs"
		loadProc(glGetProgramEnvParameterdvARB,"glGetProgramEnvParameterdvARB");
#line 1195 "lib/OpenGL/V2.c"
#line 558 "lib/OpenGL/V2.xs"
	{
		GLdouble params[4];
		glGetProgramEnvParameterdvARB(target,index,params);

		EXTEND(sp, 4);
		PUSHs(sv_2mortal(newSVnv(params[0])));
		PUSHs(sv_2mortal(newSVnv(params[1])));
		PUSHs(sv_2mortal(newSVnv(params[2])));
		PUSHs(sv_2mortal(newSVnv(params[3])));
	}
#line 1207 "lib/OpenGL/V2.c"
	PUTBACK;
	return;
    }
}


XS_EUPXS(XS_OpenGL_glGetProgramEnvParameterfvARB_c); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glGetProgramEnvParameterfvARB_c)
{
    dVAR; dXSARGS;
    if (items != 3)
       croak_xs_usage(cv,  "target, index, params");
    {
	GLenum	target = (int)SvIV(ST(0))
;
	GLint	index = (int)SvIV(ST(1))
;
	void *	params = INT2PTR(void *,SvIV(ST(2)))
;
#line 576 "lib/OpenGL/V2.xs"
		loadProc(glGetProgramEnvParameterfvARB,"glGetProgramEnvParameterfvARB");
#line 1229 "lib/OpenGL/V2.c"
#line 578 "lib/OpenGL/V2.xs"
		glGetProgramEnvParameterfvARB(target,index,(GLfloat*)params);
#line 1232 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glGetProgramEnvParameterfvARB_s); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glGetProgramEnvParameterfvARB_s)
{
    dVAR; dXSARGS;
    if (items != 3)
       croak_xs_usage(cv,  "target, index, params");
    {
	GLenum	target = (int)SvIV(ST(0))
;
	GLint	index = (int)SvIV(ST(1))
;
	SV *	params = ST(2)
;
#line 587 "lib/OpenGL/V2.xs"
		loadProc(glGetProgramEnvParameterfvARB,"glGetProgramEnvParameterfvARB");
#line 1253 "lib/OpenGL/V2.c"
#line 589 "lib/OpenGL/V2.xs"
	{
		GLfloat * params_s = EL(params, sizeof(GLfloat) * 4);
		glGetProgramEnvParameterfvARB(target,index,params_s);
	}
#line 1259 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glGetProgramEnvParameterfvARB_p); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glGetProgramEnvParameterfvARB_p)
{
    dVAR; dXSARGS;
    if (items != 2)
       croak_xs_usage(cv,  "target, index");
    PERL_UNUSED_VAR(ax); /* -Wall */
    SP -= items;
    {
	GLenum	target = (int)SvIV(ST(0))
;
	GLint	index = (int)SvIV(ST(1))
;
#line 600 "lib/OpenGL/V2.xs"
		loadProc(glGetProgramEnvParameterfvARB,"glGetProgramEnvParameterfvARB");
#line 1280 "lib/OpenGL/V2.c"
#line 602 "lib/OpenGL/V2.xs"
	{
		GLfloat params[4];
		glGetProgramEnvParameterfvARB(target,index,params);

		EXTEND(sp, 4);
		PUSHs(sv_2mortal(newSVnv(params[0])));
		PUSHs(sv_2mortal(newSVnv(params[1])));
		PUSHs(sv_2mortal(newSVnv(params[2])));
		PUSHs(sv_2mortal(newSVnv(params[3])));
	}
#line 1292 "lib/OpenGL/V2.c"
	PUTBACK;
	return;
    }
}


XS_EUPXS(XS_OpenGL_glGetProgramLocalParameterdvARB_c); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glGetProgramLocalParameterdvARB_c)
{
    dVAR; dXSARGS;
    if (items != 3)
       croak_xs_usage(cv,  "target, index, params");
    {
	GLenum	target = (int)SvIV(ST(0))
;
	GLint	index = (int)SvIV(ST(1))
;
	void *	params = INT2PTR(void *,SvIV(ST(2)))
;
#line 620 "lib/OpenGL/V2.xs"
		loadProc(glGetProgramLocalParameterdvARB,"glGetProgramLocalParameterdvARB");
#line 1314 "lib/OpenGL/V2.c"
#line 622 "lib/OpenGL/V2.xs"
		glGetProgramLocalParameterdvARB(target,index,(GLdouble*)params);
#line 1317 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glGetProgramLocalParameterdvARB_s); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glGetProgramLocalParameterdvARB_s)
{
    dVAR; dXSARGS;
    if (items != 3)
       croak_xs_usage(cv,  "target, index, params");
    {
	GLenum	target = (int)SvIV(ST(0))
;
	GLint	index = (int)SvIV(ST(1))
;
	SV *	params = ST(2)
;
#line 631 "lib/OpenGL/V2.xs"
		loadProc(glGetProgramLocalParameterdvARB,"glGetProgramLocalParameterdvARB");
#line 1338 "lib/OpenGL/V2.c"
#line 633 "lib/OpenGL/V2.xs"
	{
		GLdouble * params_s = EL(params, sizeof(GLdouble) * 4);
		glGetProgramLocalParameterdvARB(target,index,params_s);
	}
#line 1344 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glGetProgramLocalParameterdvARB_p); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glGetProgramLocalParameterdvARB_p)
{
    dVAR; dXSARGS;
    if (items != 2)
       croak_xs_usage(cv,  "target, index");
    PERL_UNUSED_VAR(ax); /* -Wall */
    SP -= items;
    {
	GLenum	target = (int)SvIV(ST(0))
;
	GLint	index = (int)SvIV(ST(1))
;
#line 644 "lib/OpenGL/V2.xs"
		loadProc(glGetProgramLocalParameterdvARB,"glGetProgramLocalParameterdvARB");
#line 1365 "lib/OpenGL/V2.c"
#line 646 "lib/OpenGL/V2.xs"
	{
		GLdouble params[4];
		glGetProgramLocalParameterdvARB(target,index,params);

		EXTEND(sp, 4);
		PUSHs(sv_2mortal(newSVnv(params[0])));
		PUSHs(sv_2mortal(newSVnv(params[1])));
		PUSHs(sv_2mortal(newSVnv(params[2])));
		PUSHs(sv_2mortal(newSVnv(params[3])));
	}
#line 1377 "lib/OpenGL/V2.c"
	PUTBACK;
	return;
    }
}


XS_EUPXS(XS_OpenGL_glGetProgramLocalParameterfvARB_c); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glGetProgramLocalParameterfvARB_c)
{
    dVAR; dXSARGS;
    if (items != 3)
       croak_xs_usage(cv,  "target, index, params");
    {
	GLenum	target = (int)SvIV(ST(0))
;
	GLint	index = (int)SvIV(ST(1))
;
	void *	params = INT2PTR(void *,SvIV(ST(2)))
;
#line 664 "lib/OpenGL/V2.xs"
		loadProc(glGetProgramLocalParameterfvARB,"glGetProgramLocalParameterfvARB");
#line 1399 "lib/OpenGL/V2.c"
#line 666 "lib/OpenGL/V2.xs"
		glGetProgramLocalParameterfvARB(target,index,(GLfloat*)params);
#line 1402 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glGetProgramLocalParameterfvARB_s); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glGetProgramLocalParameterfvARB_s)
{
    dVAR; dXSARGS;
    if (items != 3)
       croak_xs_usage(cv,  "target, index, params");
    {
	GLenum	target = (int)SvIV(ST(0))
;
	GLint	index = (int)SvIV(ST(1))
;
	SV *	params = ST(2)
;
#line 675 "lib/OpenGL/V2.xs"
		loadProc(glGetProgramLocalParameterfvARB,"glGetProgramLocalParameterfvARB");
#line 1423 "lib/OpenGL/V2.c"
#line 677 "lib/OpenGL/V2.xs"
	{
		GLfloat * params_s = EL(params, sizeof(GLfloat) * 4);
		glGetProgramLocalParameterfvARB(target,index,params_s);
	}
#line 1429 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glGetProgramLocalParameterfvARB_p); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glGetProgramLocalParameterfvARB_p)
{
    dVAR; dXSARGS;
    if (items != 2)
       croak_xs_usage(cv,  "target, index");
    PERL_UNUSED_VAR(ax); /* -Wall */
    SP -= items;
    {
	GLenum	target = (int)SvIV(ST(0))
;
	GLint	index = (int)SvIV(ST(1))
;
#line 688 "lib/OpenGL/V2.xs"
		loadProc(glGetProgramLocalParameterfvARB,"glGetProgramLocalParameterfvARB");
#line 1450 "lib/OpenGL/V2.c"
#line 690 "lib/OpenGL/V2.xs"
	{
		GLfloat params[4];
		glGetProgramLocalParameterfvARB(target,index,params);

		EXTEND(sp, 4);
		PUSHs(sv_2mortal(newSVnv(params[0])));
		PUSHs(sv_2mortal(newSVnv(params[1])));
		PUSHs(sv_2mortal(newSVnv(params[2])));
		PUSHs(sv_2mortal(newSVnv(params[3])));
	}
#line 1462 "lib/OpenGL/V2.c"
	PUTBACK;
	return;
    }
}


XS_EUPXS(XS_OpenGL_glGetProgramivARB_c); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glGetProgramivARB_c)
{
    dVAR; dXSARGS;
    if (items != 3)
       croak_xs_usage(cv,  "target, pname, params");
    {
	GLenum	target = (int)SvIV(ST(0))
;
	GLenum	pname = (int)SvIV(ST(1))
;
	void *	params = INT2PTR(void *,SvIV(ST(2)))
;
#line 708 "lib/OpenGL/V2.xs"
		loadProc(glGetProgramivARB,"glGetProgramivARB");
#line 1484 "lib/OpenGL/V2.c"
#line 710 "lib/OpenGL/V2.xs"
		glGetProgramivARB(target,pname,params);
#line 1487 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glGetProgramivARB_s); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glGetProgramivARB_s)
{
    dVAR; dXSARGS;
    if (items != 3)
       croak_xs_usage(cv,  "target, pname, params");
    {
	GLenum	target = (int)SvIV(ST(0))
;
	GLenum	pname = (int)SvIV(ST(1))
;
	SV *	params = ST(2)
;
#line 719 "lib/OpenGL/V2.xs"
		loadProc(glGetProgramivARB,"glGetProgramivARB");
#line 1508 "lib/OpenGL/V2.c"
#line 721 "lib/OpenGL/V2.xs"
	{
		GLint * params_s = EL(params, sizeof(GLint)*gl_get_count(pname));
		glGetProgramivARB(target,pname,params_s);
	}
#line 1514 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glGetProgramivARB_p); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glGetProgramivARB_p)
{
    dVAR; dXSARGS;
    if (items != 2)
       croak_xs_usage(cv,  "target, pname");
    {
	GLenum	target = (int)SvIV(ST(0))
;
	GLenum	pname = (int)SvIV(ST(1))
;
	GLuint	RETVAL;
	dXSTARG;
#line 732 "lib/OpenGL/V2.xs"
		loadProc(glGetProgramivARB,"glGetProgramivARB");
#line 1535 "lib/OpenGL/V2.c"
#line 734 "lib/OpenGL/V2.xs"
	{
		GLuint param;
		glGetProgramivARB(target,pname,(void *)&param);
		RETVAL = param;
	}
#line 1542 "lib/OpenGL/V2.c"
	XSprePUSH;
	PUSHu((UV)RETVAL);
    }
    XSRETURN(1);
}


XS_EUPXS(XS_OpenGL_glGetProgramStringARB_c); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glGetProgramStringARB_c)
{
    dVAR; dXSARGS;
    if (items != 3)
       croak_xs_usage(cv,  "target, pname, string");
    {
	GLenum	target = (int)SvIV(ST(0))
;
	GLenum	pname = (int)SvIV(ST(1))
;
	void *	string = INT2PTR(void *,SvIV(ST(2)))
;
#line 749 "lib/OpenGL/V2.xs"
		loadProc(glGetProgramStringARB,"glGetProgramStringARB");
#line 1565 "lib/OpenGL/V2.c"
#line 751 "lib/OpenGL/V2.xs"
		glGetProgramStringARB(target,pname,string);
#line 1568 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glGetProgramStringARB_s); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glGetProgramStringARB_s)
{
    dVAR; dXSARGS;
    if (items != 3)
       croak_xs_usage(cv,  "target, pname, string");
    {
	GLenum	target = (int)SvIV(ST(0))
;
	GLenum	pname = (int)SvIV(ST(1))
;
	SV *	string = ST(2)
;
#line 760 "lib/OpenGL/V2.xs"
		loadProc(glGetProgramivARB,"glGetProgramivARB");
		loadProc(glGetProgramStringARB,"glGetProgramStringARB");
#line 1590 "lib/OpenGL/V2.c"
#line 763 "lib/OpenGL/V2.xs"
	{
		GLint len;
		glGetProgramivARB(target,GL_PROGRAM_LENGTH_ARB,(GLvoid *)&len);
		if (len)
		{
			GLubyte * string_s = EL(string, sizeof(GLubyte)*len);
			glGetProgramStringARB(target,pname,string_s);
		}
	}
#line 1601 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glGetProgramStringARB_p); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glGetProgramStringARB_p)
{
    dVAR; dXSARGS;
    if (items < 1 || items > 2)
       croak_xs_usage(cv,  "target, pname=GL_PROGRAM_STRING_ARB");
    {
	GLenum	target = (int)SvIV(ST(0))
;
	GLenum	pname;
	SV *	RETVAL;

	if (items < 2)
	    pname = GL_PROGRAM_STRING_ARB;
	else {
	    pname = (int)SvIV(ST(1))
;
	}
#line 780 "lib/OpenGL/V2.xs"
		loadProc(glGetProgramivARB,"glGetProgramivARB");
		loadProc(glGetProgramStringARB,"glGetProgramStringARB");
#line 1628 "lib/OpenGL/V2.c"
#line 783 "lib/OpenGL/V2.xs"
	{
		GLint len;
		glGetProgramivARB(target,GL_PROGRAM_LENGTH_ARB,(GLvoid *)&len);
		if (len)
		{
			char * string = malloc(len+1);
			glGetProgramStringARB(target,pname,(GLubyte*)string);
			string[len] = 0;
			if (*string)
				RETVAL = newSVpv(string, 0);
			else
				RETVAL = newSVsv(&PL_sv_undef);

			free(string);
		}
		else
		{
			RETVAL = newSVsv(&PL_sv_undef);
		}
	}
#line 1650 "lib/OpenGL/V2.c"
	RETVAL = sv_2mortal(RETVAL);
	ST(0) = RETVAL;
    }
    XSRETURN(1);
}


XS_EUPXS(XS_OpenGL_glIsProgramARB); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glIsProgramARB)
{
    dVAR; dXSARGS;
    if (items != 1)
       croak_xs_usage(cv,  "program");
    {
	GLuint	program = (unsigned int)SvUV(ST(0))
;
	GLboolean	RETVAL;
#line 811 "lib/OpenGL/V2.xs"
		loadProc(glIsProgramARB,"glIsProgramARB");
#line 1670 "lib/OpenGL/V2.c"
#line 813 "lib/OpenGL/V2.xs"
	{
		RETVAL = glIsProgramARB(program);
	}
#line 1675 "lib/OpenGL/V2.c"
	ST(0) = boolSV(RETVAL);
    }
    XSRETURN(1);
}

#endif // GL_ARB_vertex_program
#if defined(GL_ARB_vertex_program) || defined(GL_ARB_vertex_shader)
#define XSubPPtmpAAAC 1


XS_EUPXS(XS_OpenGL_glVertexAttrib1dARB); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glVertexAttrib1dARB)
{
    dVAR; dXSARGS;
    if (items != 2)
       croak_xs_usage(cv,  "index, x");
    {
	GLuint	index = (unsigned int)SvUV(ST(0))
;
	GLdouble	x = (double)SvNV(ST(1))
;
#line 830 "lib/OpenGL/V2.xs"
		loadProc(glVertexAttrib1dARB,"glVertexAttrib1dARB");
#line 1699 "lib/OpenGL/V2.c"

	glVertexAttrib1dARB(index, x);
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glVertexAttrib1dvARB_c); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glVertexAttrib1dvARB_c)
{
    dVAR; dXSARGS;
    if (items != 2)
       croak_xs_usage(cv,  "index, v");
    {
	GLuint	index = (unsigned int)SvUV(ST(0))
;
	void *	v = INT2PTR(void *,SvIV(ST(1)))
;
#line 838 "lib/OpenGL/V2.xs"
		loadProc(glVertexAttrib1dvARB,"glVertexAttrib1dvARB");
#line 1720 "lib/OpenGL/V2.c"
#line 840 "lib/OpenGL/V2.xs"
		glVertexAttrib1dvARB(index,(GLdouble*)v);
#line 1723 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glVertexAttrib1dvARB_s); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glVertexAttrib1dvARB_s)
{
    dVAR; dXSARGS;
    if (items != 2)
       croak_xs_usage(cv,  "index, v");
    {
	GLuint	index = (unsigned int)SvUV(ST(0))
;
	SV *	v = ST(1)
;
#line 848 "lib/OpenGL/V2.xs"
		loadProc(glVertexAttrib1dvARB,"glVertexAttrib1dvARB");
#line 1742 "lib/OpenGL/V2.c"
#line 850 "lib/OpenGL/V2.xs"
	{
		GLdouble * v_s = EL(v, sizeof(GLdouble)*1);
		glVertexAttrib1dvARB(index,v_s);
	}
#line 1748 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glVertexAttrib1dvARB_p); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glVertexAttrib1dvARB_p)
{
    dVAR; dXSARGS;
    if (items != 2)
       croak_xs_usage(cv,  "index, x");
    {
	GLuint	index = (unsigned int)SvUV(ST(0))
;
	GLdouble	x = (double)SvNV(ST(1))
;
#line 862 "lib/OpenGL/V2.xs"
		loadProc(glVertexAttrib1dvARB,"glVertexAttrib1dvARB");
#line 1767 "lib/OpenGL/V2.c"
#line 864 "lib/OpenGL/V2.xs"
	{
		GLdouble param[1];
		param[0] = x;
		glVertexAttrib1dvARB(index,param);
	}
#line 1774 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glVertexAttrib1fARB); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glVertexAttrib1fARB)
{
    dVAR; dXSARGS;
    if (items != 2)
       croak_xs_usage(cv,  "index, x");
    {
	GLuint	index = (unsigned int)SvUV(ST(0))
;
	GLfloat	x = (float)SvNV(ST(1))
;
#line 876 "lib/OpenGL/V2.xs"
		loadProc(glVertexAttrib1fARB,"glVertexAttrib1fARB");
#line 1793 "lib/OpenGL/V2.c"

	glVertexAttrib1fARB(index, x);
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glVertexAttrib1sARB); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glVertexAttrib1sARB)
{
    dVAR; dXSARGS;
    if (items != 2)
       croak_xs_usage(cv,  "index, x");
    {
	GLuint	index = (unsigned int)SvUV(ST(0))
;
	GLshort	x = (short)SvIV(ST(1))
;
#line 884 "lib/OpenGL/V2.xs"
		loadProc(glVertexAttrib1sARB,"glVertexAttrib1sARB");
#line 1814 "lib/OpenGL/V2.c"

	glVertexAttrib1sARB(index, x);
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glVertexAttrib1svARB_c); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glVertexAttrib1svARB_c)
{
    dVAR; dXSARGS;
    if (items != 2)
       croak_xs_usage(cv,  "index, v");
    {
	GLuint	index = (unsigned int)SvUV(ST(0))
;
	void *	v = INT2PTR(void *,SvIV(ST(1)))
;
#line 892 "lib/OpenGL/V2.xs"
		loadProc(glVertexAttrib1svARB,"glVertexAttrib1svARB");
#line 1835 "lib/OpenGL/V2.c"
#line 894 "lib/OpenGL/V2.xs"
		glVertexAttrib1svARB(index,(GLshort*)v);
#line 1838 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glVertexAttrib1svARB_s); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glVertexAttrib1svARB_s)
{
    dVAR; dXSARGS;
    if (items != 2)
       croak_xs_usage(cv,  "index, v");
    {
	GLuint	index = (unsigned int)SvUV(ST(0))
;
	SV *	v = ST(1)
;
#line 902 "lib/OpenGL/V2.xs"
		loadProc(glVertexAttrib1svARB,"glVertexAttrib1svARB");
#line 1857 "lib/OpenGL/V2.c"
#line 904 "lib/OpenGL/V2.xs"
	{
		GLshort * v_s = EL(v, sizeof(GLshort)*1);
		glVertexAttrib1svARB(index,v_s);
	}
#line 1863 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glVertexAttrib1svARB_p); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glVertexAttrib1svARB_p)
{
    dVAR; dXSARGS;
    if (items != 2)
       croak_xs_usage(cv,  "index, x");
    {
	GLuint	index = (unsigned int)SvUV(ST(0))
;
	GLshort	x = (short)SvIV(ST(1))
;
#line 916 "lib/OpenGL/V2.xs"
		loadProc(glVertexAttrib1svARB,"glVertexAttrib1svARB");
#line 1882 "lib/OpenGL/V2.c"
#line 918 "lib/OpenGL/V2.xs"
	{
		GLshort param[1];
		param[0] = x;
		glVertexAttrib1svARB(index,param);
	}
#line 1889 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glVertexAttrib2dARB); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glVertexAttrib2dARB)
{
    dVAR; dXSARGS;
    if (items != 3)
       croak_xs_usage(cv,  "index, x, y");
    {
	GLuint	index = (unsigned int)SvUV(ST(0))
;
	GLdouble	x = (double)SvNV(ST(1))
;
	GLdouble	y = (double)SvNV(ST(2))
;
#line 931 "lib/OpenGL/V2.xs"
		loadProc(glVertexAttrib2dARB,"glVertexAttrib2dARB");
#line 1910 "lib/OpenGL/V2.c"

	glVertexAttrib2dARB(index, x, y);
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glVertexAttrib2dvARB_c); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glVertexAttrib2dvARB_c)
{
    dVAR; dXSARGS;
    if (items != 2)
       croak_xs_usage(cv,  "index, v");
    {
	GLuint	index = (unsigned int)SvUV(ST(0))
;
	void *	v = INT2PTR(void *,SvIV(ST(1)))
;
#line 939 "lib/OpenGL/V2.xs"
		loadProc(glVertexAttrib2dvARB,"glVertexAttrib2dvARB");
#line 1931 "lib/OpenGL/V2.c"
#line 941 "lib/OpenGL/V2.xs"
		glVertexAttrib2dvARB(index,(GLdouble*)v);
#line 1934 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glVertexAttrib2dvARB_s); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glVertexAttrib2dvARB_s)
{
    dVAR; dXSARGS;
    if (items != 2)
       croak_xs_usage(cv,  "index, v");
    {
	GLuint	index = (unsigned int)SvUV(ST(0))
;
	SV *	v = ST(1)
;
#line 949 "lib/OpenGL/V2.xs"
		loadProc(glVertexAttrib2dvARB,"glVertexAttrib2dvARB");
#line 1953 "lib/OpenGL/V2.c"
#line 951 "lib/OpenGL/V2.xs"
	{
		GLdouble * v_s = EL(v, sizeof(GLdouble)*2);
		glVertexAttrib2dvARB(index,v_s);
	}
#line 1959 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glVertexAttrib2dvARB_p); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glVertexAttrib2dvARB_p)
{
    dVAR; dXSARGS;
    if (items != 3)
       croak_xs_usage(cv,  "index, x, y");
    {
	GLuint	index = (unsigned int)SvUV(ST(0))
;
	GLdouble	x = (double)SvNV(ST(1))
;
	GLdouble	y = (double)SvNV(ST(2))
;
#line 964 "lib/OpenGL/V2.xs"
		loadProc(glVertexAttrib2dvARB,"glVertexAttrib2dvARB");
#line 1980 "lib/OpenGL/V2.c"
#line 966 "lib/OpenGL/V2.xs"
	{
		GLdouble param[2];
		param[0] = x;
		param[1] = y;
		glVertexAttrib2dvARB(index,param);
	}
#line 1988 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glVertexAttrib2fARB); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glVertexAttrib2fARB)
{
    dVAR; dXSARGS;
    if (items != 3)
       croak_xs_usage(cv,  "index, x, y");
    {
	GLuint	index = (unsigned int)SvUV(ST(0))
;
	GLfloat	x = (float)SvNV(ST(1))
;
	GLfloat	y = (float)SvNV(ST(2))
;
#line 980 "lib/OpenGL/V2.xs"
		loadProc(glVertexAttrib2fARB,"glVertexAttrib2fARB");
#line 2009 "lib/OpenGL/V2.c"

	glVertexAttrib2fARB(index, x, y);
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glVertexAttrib2sARB); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glVertexAttrib2sARB)
{
    dVAR; dXSARGS;
    if (items != 3)
       croak_xs_usage(cv,  "index, x, y");
    {
	GLuint	index = (unsigned int)SvUV(ST(0))
;
	GLshort	x = (short)SvIV(ST(1))
;
	GLshort	y = (short)SvIV(ST(2))
;
#line 989 "lib/OpenGL/V2.xs"
		loadProc(glVertexAttrib2sARB,"glVertexAttrib2sARB");
#line 2032 "lib/OpenGL/V2.c"

	glVertexAttrib2sARB(index, x, y);
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glVertexAttrib2svARB_c); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glVertexAttrib2svARB_c)
{
    dVAR; dXSARGS;
    if (items != 2)
       croak_xs_usage(cv,  "index, v");
    {
	GLuint	index = (unsigned int)SvUV(ST(0))
;
	void *	v = INT2PTR(void *,SvIV(ST(1)))
;
#line 997 "lib/OpenGL/V2.xs"
		loadProc(glVertexAttrib2svARB,"glVertexAttrib2svARB");
#line 2053 "lib/OpenGL/V2.c"
#line 999 "lib/OpenGL/V2.xs"
		glVertexAttrib2svARB(index,(GLshort*)v);
#line 2056 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glVertexAttrib2svARB_s); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glVertexAttrib2svARB_s)
{
    dVAR; dXSARGS;
    if (items != 2)
       croak_xs_usage(cv,  "index, v");
    {
	GLuint	index = (unsigned int)SvUV(ST(0))
;
	SV *	v = ST(1)
;
#line 1007 "lib/OpenGL/V2.xs"
		loadProc(glVertexAttrib2svARB,"glVertexAttrib2svARB");
#line 2075 "lib/OpenGL/V2.c"
#line 1009 "lib/OpenGL/V2.xs"
	{
		GLshort * v_s = EL(v, sizeof(GLshort)*2);
		glVertexAttrib2svARB(index,v_s);
	}
#line 2081 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glVertexAttrib2svARB_p); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glVertexAttrib2svARB_p)
{
    dVAR; dXSARGS;
    if (items != 3)
       croak_xs_usage(cv,  "index, x, y");
    {
	GLuint	index = (unsigned int)SvUV(ST(0))
;
	GLshort	x = (short)SvIV(ST(1))
;
	GLshort	y = (short)SvIV(ST(2))
;
#line 1022 "lib/OpenGL/V2.xs"
		loadProc(glVertexAttrib2svARB,"glVertexAttrib2svARB");
#line 2102 "lib/OpenGL/V2.c"
#line 1024 "lib/OpenGL/V2.xs"
	{
		GLshort param[2];
		param[0] = x;
		param[1] = y;
		glVertexAttrib2svARB(index,param);
	}
#line 2110 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glVertexAttrib3dARB); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glVertexAttrib3dARB)
{
    dVAR; dXSARGS;
    if (items != 4)
       croak_xs_usage(cv,  "index, x, y, z");
    {
	GLuint	index = (unsigned int)SvUV(ST(0))
;
	GLdouble	x = (double)SvNV(ST(1))
;
	GLdouble	y = (double)SvNV(ST(2))
;
	GLdouble	z = (double)SvNV(ST(3))
;
#line 1039 "lib/OpenGL/V2.xs"
		loadProc(glVertexAttrib3dARB,"glVertexAttrib3dARB");
#line 2133 "lib/OpenGL/V2.c"

	glVertexAttrib3dARB(index, x, y, z);
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glVertexAttrib3dvARB_c); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glVertexAttrib3dvARB_c)
{
    dVAR; dXSARGS;
    if (items != 2)
       croak_xs_usage(cv,  "index, v");
    {
	GLuint	index = (unsigned int)SvUV(ST(0))
;
	void *	v = INT2PTR(void *,SvIV(ST(1)))
;
#line 1047 "lib/OpenGL/V2.xs"
		loadProc(glVertexAttrib3dvARB,"glVertexAttrib3dvARB");
#line 2154 "lib/OpenGL/V2.c"
#line 1049 "lib/OpenGL/V2.xs"
		glVertexAttrib3dvARB(index,(GLdouble*)v);
#line 2157 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glVertexAttrib3dvARB_s); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glVertexAttrib3dvARB_s)
{
    dVAR; dXSARGS;
    if (items != 2)
       croak_xs_usage(cv,  "index, v");
    {
	GLuint	index = (unsigned int)SvUV(ST(0))
;
	SV *	v = ST(1)
;
#line 1057 "lib/OpenGL/V2.xs"
		loadProc(glVertexAttrib3dvARB,"glVertexAttrib3dvARB");
#line 2176 "lib/OpenGL/V2.c"
#line 1059 "lib/OpenGL/V2.xs"
	{
		GLdouble * v_s = EL(v, sizeof(GLdouble)*3);
		glVertexAttrib3dvARB(index,v_s);
	}
#line 2182 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glVertexAttrib3dvARB_p); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glVertexAttrib3dvARB_p)
{
    dVAR; dXSARGS;
    if (items != 4)
       croak_xs_usage(cv,  "index, x, y, z");
    {
	GLuint	index = (unsigned int)SvUV(ST(0))
;
	GLdouble	x = (double)SvNV(ST(1))
;
	GLdouble	y = (double)SvNV(ST(2))
;
	GLdouble	z = (double)SvNV(ST(3))
;
#line 1073 "lib/OpenGL/V2.xs"
		loadProc(glVertexAttrib3dvARB,"glVertexAttrib3dvARB");
#line 2205 "lib/OpenGL/V2.c"
#line 1075 "lib/OpenGL/V2.xs"
	{
		GLdouble param[3];
		param[0] = x;
		param[1] = y;
		param[2] = z;
		glVertexAttrib3dvARB(index,param);
	}
#line 2214 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glVertexAttrib3fARB); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glVertexAttrib3fARB)
{
    dVAR; dXSARGS;
    if (items != 4)
       croak_xs_usage(cv,  "index, x, y, z");
    {
	GLuint	index = (unsigned int)SvUV(ST(0))
;
	GLfloat	x = (float)SvNV(ST(1))
;
	GLfloat	y = (float)SvNV(ST(2))
;
	GLfloat	z = (float)SvNV(ST(3))
;
#line 1091 "lib/OpenGL/V2.xs"
		loadProc(glVertexAttrib3fARB,"glVertexAttrib3fARB");
#line 2237 "lib/OpenGL/V2.c"

	glVertexAttrib3fARB(index, x, y, z);
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glVertexAttrib3fvARB_c); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glVertexAttrib3fvARB_c)
{
    dVAR; dXSARGS;
    if (items != 2)
       croak_xs_usage(cv,  "index, v");
    {
	GLuint	index = (unsigned int)SvUV(ST(0))
;
	void *	v = INT2PTR(void *,SvIV(ST(1)))
;
#line 1099 "lib/OpenGL/V2.xs"
		loadProc(glVertexAttrib3fvARB,"glVertexAttrib3fvARB");
#line 2258 "lib/OpenGL/V2.c"
#line 1101 "lib/OpenGL/V2.xs"
		glVertexAttrib3fvARB(index,(GLfloat*)v);
#line 2261 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glVertexAttrib3fvARB_s); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glVertexAttrib3fvARB_s)
{
    dVAR; dXSARGS;
    if (items != 2)
       croak_xs_usage(cv,  "index, v");
    {
	GLuint	index = (unsigned int)SvUV(ST(0))
;
	SV *	v = ST(1)
;
#line 1109 "lib/OpenGL/V2.xs"
		loadProc(glVertexAttrib3fvARB,"glVertexAttrib3fvARB");
#line 2280 "lib/OpenGL/V2.c"
#line 1111 "lib/OpenGL/V2.xs"
	{
		GLfloat * v_s = EL(v, sizeof(GLfloat)*3);
		glVertexAttrib3fvARB(index,v_s);
	}
#line 2286 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glVertexAttrib3fvARB_p); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glVertexAttrib3fvARB_p)
{
    dVAR; dXSARGS;
    if (items != 4)
       croak_xs_usage(cv,  "index, x, y, z");
    {
	GLuint	index = (unsigned int)SvUV(ST(0))
;
	GLfloat	x = (float)SvNV(ST(1))
;
	GLfloat	y = (float)SvNV(ST(2))
;
	GLfloat	z = (float)SvNV(ST(3))
;
#line 1125 "lib/OpenGL/V2.xs"
		loadProc(glVertexAttrib3fvARB,"glVertexAttrib3fvARB");
#line 2309 "lib/OpenGL/V2.c"
#line 1127 "lib/OpenGL/V2.xs"
	{
		GLfloat param[3];
		param[0] = x;
		param[1] = y;
		param[2] = z;
		glVertexAttrib3fvARB(index,param);
	}
#line 2318 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glVertexAttrib3sARB); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glVertexAttrib3sARB)
{
    dVAR; dXSARGS;
    if (items != 4)
       croak_xs_usage(cv,  "index, x, y, z");
    {
	GLuint	index = (unsigned int)SvUV(ST(0))
;
	GLshort	x = (short)SvIV(ST(1))
;
	GLshort	y = (short)SvIV(ST(2))
;
	GLshort	z = (short)SvIV(ST(3))
;
#line 1143 "lib/OpenGL/V2.xs"
		loadProc(glVertexAttrib3sARB,"glVertexAttrib3sARB");
#line 2341 "lib/OpenGL/V2.c"

	glVertexAttrib3sARB(index, x, y, z);
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glVertexAttrib3svARB_c); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glVertexAttrib3svARB_c)
{
    dVAR; dXSARGS;
    if (items != 2)
       croak_xs_usage(cv,  "index, v");
    {
	GLuint	index = (unsigned int)SvUV(ST(0))
;
	void *	v = INT2PTR(void *,SvIV(ST(1)))
;
#line 1151 "lib/OpenGL/V2.xs"
		loadProc(glVertexAttrib3svARB,"glVertexAttrib3svARB");
#line 2362 "lib/OpenGL/V2.c"
#line 1153 "lib/OpenGL/V2.xs"
		glVertexAttrib3svARB(index,(GLshort*)v);
#line 2365 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glVertexAttrib3svARB_s); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glVertexAttrib3svARB_s)
{
    dVAR; dXSARGS;
    if (items != 2)
       croak_xs_usage(cv,  "index, v");
    {
	GLuint	index = (unsigned int)SvUV(ST(0))
;
	SV *	v = ST(1)
;
#line 1161 "lib/OpenGL/V2.xs"
		loadProc(glVertexAttrib3svARB,"glVertexAttrib3svARB");
#line 2384 "lib/OpenGL/V2.c"
#line 1163 "lib/OpenGL/V2.xs"
	{
		GLshort * v_s = EL(v, sizeof(GLshort)*3);
		glVertexAttrib3svARB(index,v_s);
	}
#line 2390 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glVertexAttrib3svARB_p); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glVertexAttrib3svARB_p)
{
    dVAR; dXSARGS;
    if (items != 4)
       croak_xs_usage(cv,  "index, x, y, z");
    {
	GLuint	index = (unsigned int)SvUV(ST(0))
;
	GLshort	x = (short)SvIV(ST(1))
;
	GLshort	y = (short)SvIV(ST(2))
;
	GLshort	z = (short)SvIV(ST(3))
;
#line 1177 "lib/OpenGL/V2.xs"
		loadProc(glVertexAttrib3svARB,"glVertexAttrib3svARB");
#line 2413 "lib/OpenGL/V2.c"
#line 1179 "lib/OpenGL/V2.xs"
	{
		GLshort param[3];
		param[0] = x;
		param[1] = y;
		param[2] = z;
		glVertexAttrib3svARB(index,param);
	}
#line 2422 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glVertexAttrib4NbvARB_c); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glVertexAttrib4NbvARB_c)
{
    dVAR; dXSARGS;
    if (items != 2)
       croak_xs_usage(cv,  "index, v");
    {
	GLuint	index = (unsigned int)SvUV(ST(0))
;
	void *	v = INT2PTR(void *,SvIV(ST(1)))
;
#line 1193 "lib/OpenGL/V2.xs"
		loadProc(glVertexAttrib4NbvARB,"glVertexAttrib4NbvARB");
#line 2441 "lib/OpenGL/V2.c"
#line 1195 "lib/OpenGL/V2.xs"
		glVertexAttrib4NbvARB(index,(GLbyte*)v);
#line 2444 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glVertexAttrib4NbvARB_s); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glVertexAttrib4NbvARB_s)
{
    dVAR; dXSARGS;
    if (items != 2)
       croak_xs_usage(cv,  "index, v");
    {
	GLuint	index = (unsigned int)SvUV(ST(0))
;
	SV *	v = ST(1)
;
#line 1203 "lib/OpenGL/V2.xs"
		loadProc(glVertexAttrib4NbvARB,"glVertexAttrib4NbvARB");
#line 2463 "lib/OpenGL/V2.c"
#line 1205 "lib/OpenGL/V2.xs"
	{
		GLbyte * v_s = EL(v, sizeof(GLbyte)*4);
		glVertexAttrib4NbvARB(index,v_s);
	}
#line 2469 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glVertexAttrib4NbvARB_p); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glVertexAttrib4NbvARB_p)
{
    dVAR; dXSARGS;
    if (items != 5)
       croak_xs_usage(cv,  "index, x, y, z, w");
    {
	GLuint	index = (unsigned int)SvUV(ST(0))
;
	GLbyte	x = (int)SvIV(ST(1))
;
	GLbyte	y = (int)SvIV(ST(2))
;
	GLbyte	z = (int)SvIV(ST(3))
;
	GLbyte	w = (int)SvIV(ST(4))
;
#line 1219 "lib/OpenGL/V2.xs"
		loadProc(glVertexAttrib4NbvARB,"glVertexAttrib4NbvARB");
#line 2494 "lib/OpenGL/V2.c"
#line 1221 "lib/OpenGL/V2.xs"
	{
		GLbyte param[4];
		param[0] = x;
		param[1] = y;
		param[2] = z;
		param[3] = w;
		glVertexAttrib4NbvARB(index,param);
	}
#line 2504 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glVertexAttrib4NivARB_c); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glVertexAttrib4NivARB_c)
{
    dVAR; dXSARGS;
    if (items != 2)
       croak_xs_usage(cv,  "index, v");
    {
	GLuint	index = (unsigned int)SvUV(ST(0))
;
	void *	v = INT2PTR(void *,SvIV(ST(1)))
;
#line 1236 "lib/OpenGL/V2.xs"
		loadProc(glVertexAttrib4NivARB,"glVertexAttrib4NivARB");
#line 2523 "lib/OpenGL/V2.c"
#line 1238 "lib/OpenGL/V2.xs"
		glVertexAttrib4NivARB(index,(GLint*)v);
#line 2526 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glVertexAttrib4NivARB_s); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glVertexAttrib4NivARB_s)
{
    dVAR; dXSARGS;
    if (items != 2)
       croak_xs_usage(cv,  "index, v");
    {
	GLuint	index = (unsigned int)SvUV(ST(0))
;
	SV *	v = ST(1)
;
#line 1246 "lib/OpenGL/V2.xs"
		loadProc(glVertexAttrib4NivARB,"glVertexAttrib4NivARB");
#line 2545 "lib/OpenGL/V2.c"
#line 1248 "lib/OpenGL/V2.xs"
	{
		GLint * v_s = EL(v, sizeof(GLint)*4);
		glVertexAttrib4NivARB(index,v_s);
	}
#line 2551 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glVertexAttrib4NivARB_p); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glVertexAttrib4NivARB_p)
{
    dVAR; dXSARGS;
    if (items != 5)
       croak_xs_usage(cv,  "index, x, y, z, w");
    {
	GLuint	index = (unsigned int)SvUV(ST(0))
;
	GLint	x = (int)SvIV(ST(1))
;
	GLint	y = (int)SvIV(ST(2))
;
	GLint	z = (int)SvIV(ST(3))
;
	GLint	w = (int)SvIV(ST(4))
;
#line 1262 "lib/OpenGL/V2.xs"
		loadProc(glVertexAttrib4NivARB,"glVertexAttrib4NivARB");
#line 2576 "lib/OpenGL/V2.c"
#line 1264 "lib/OpenGL/V2.xs"
	{
		GLint param[4];
		param[0] = x;
		param[1] = y;
		param[2] = z;
		param[3] = w;
		glVertexAttrib4NivARB(index,param);
	}
#line 2586 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glVertexAttrib4NsvARB_c); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glVertexAttrib4NsvARB_c)
{
    dVAR; dXSARGS;
    if (items != 2)
       croak_xs_usage(cv,  "index, v");
    {
	GLuint	index = (unsigned int)SvUV(ST(0))
;
	void *	v = INT2PTR(void *,SvIV(ST(1)))
;
#line 1279 "lib/OpenGL/V2.xs"
		loadProc(glVertexAttrib4NsvARB,"glVertexAttrib4NsvARB");
#line 2605 "lib/OpenGL/V2.c"
#line 1281 "lib/OpenGL/V2.xs"
		glVertexAttrib4NsvARB(index,(GLshort*)v);
#line 2608 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glVertexAttrib4NsvARB_s); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glVertexAttrib4NsvARB_s)
{
    dVAR; dXSARGS;
    if (items != 2)
       croak_xs_usage(cv,  "index, v");
    {
	GLuint	index = (unsigned int)SvUV(ST(0))
;
	SV *	v = ST(1)
;
#line 1289 "lib/OpenGL/V2.xs"
		loadProc(glVertexAttrib4NsvARB,"glVertexAttrib4NsvARB");
#line 2627 "lib/OpenGL/V2.c"
#line 1291 "lib/OpenGL/V2.xs"
	{
		GLshort * v_s = EL(v, sizeof(GLshort)*4);
		glVertexAttrib4NsvARB(index,v_s);
	}
#line 2633 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glVertexAttrib4NsvARB_p); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glVertexAttrib4NsvARB_p)
{
    dVAR; dXSARGS;
    if (items != 5)
       croak_xs_usage(cv,  "index, x, y, z, w");
    {
	GLuint	index = (unsigned int)SvUV(ST(0))
;
	GLshort	x = (short)SvIV(ST(1))
;
	GLshort	y = (short)SvIV(ST(2))
;
	GLshort	z = (short)SvIV(ST(3))
;
	GLshort	w = (short)SvIV(ST(4))
;
#line 1305 "lib/OpenGL/V2.xs"
		loadProc(glVertexAttrib4NsvARB,"glVertexAttrib4NsvARB");
#line 2658 "lib/OpenGL/V2.c"
#line 1307 "lib/OpenGL/V2.xs"
	{
		GLshort param[4];
		param[0] = x;
		param[1] = y;
		param[2] = z;
		param[3] = w;
		glVertexAttrib4NsvARB(index,param);
	}
#line 2668 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glVertexAttrib4NubARB); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glVertexAttrib4NubARB)
{
    dVAR; dXSARGS;
    if (items != 5)
       croak_xs_usage(cv,  "index, x, y, z, w");
    {
	GLuint	index = (unsigned int)SvUV(ST(0))
;
	GLubyte	x = (unsigned int)SvUV(ST(1))
;
	GLubyte	y = (unsigned int)SvUV(ST(2))
;
	GLubyte	z = (unsigned int)SvUV(ST(3))
;
	GLubyte	w = (unsigned int)SvUV(ST(4))
;
#line 1325 "lib/OpenGL/V2.xs"
		loadProc(glVertexAttrib4NubARB,"glVertexAttrib4NubARB");
#line 2693 "lib/OpenGL/V2.c"

	glVertexAttrib4NubARB(index, x, y, z, w);
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glVertexAttrib4NubvARB_c); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glVertexAttrib4NubvARB_c)
{
    dVAR; dXSARGS;
    if (items != 2)
       croak_xs_usage(cv,  "index, v");
    {
	GLuint	index = (unsigned int)SvUV(ST(0))
;
	void *	v = INT2PTR(void *,SvIV(ST(1)))
;
#line 1333 "lib/OpenGL/V2.xs"
		loadProc(glVertexAttrib4NubvARB,"glVertexAttrib4NubvARB");
#line 2714 "lib/OpenGL/V2.c"
#line 1335 "lib/OpenGL/V2.xs"
		glVertexAttrib4NubvARB(index,(GLubyte*)v);
#line 2717 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glVertexAttrib4NubvARB_s); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glVertexAttrib4NubvARB_s)
{
    dVAR; dXSARGS;
    if (items != 2)
       croak_xs_usage(cv,  "index, v");
    {
	GLuint	index = (unsigned int)SvUV(ST(0))
;
	SV *	v = ST(1)
;
#line 1343 "lib/OpenGL/V2.xs"
		loadProc(glVertexAttrib4NubvARB,"glVertexAttrib4NubvARB");
#line 2736 "lib/OpenGL/V2.c"
#line 1345 "lib/OpenGL/V2.xs"
	{
		GLubyte * v_s = EL(v, sizeof(GLubyte)*4);
		glVertexAttrib4NubvARB(index,v_s);
	}
#line 2742 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glVertexAttrib4NubvARB_p); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glVertexAttrib4NubvARB_p)
{
    dVAR; dXSARGS;
    if (items != 5)
       croak_xs_usage(cv,  "index, x, y, z, w");
    {
	GLuint	index = (unsigned int)SvUV(ST(0))
;
	GLubyte	x = (unsigned int)SvUV(ST(1))
;
	GLubyte	y = (unsigned int)SvUV(ST(2))
;
	GLubyte	z = (unsigned int)SvUV(ST(3))
;
	GLubyte	w = (unsigned int)SvUV(ST(4))
;
#line 1359 "lib/OpenGL/V2.xs"
		loadProc(glVertexAttrib4NubvARB,"glVertexAttrib4NubvARB");
#line 2767 "lib/OpenGL/V2.c"
#line 1361 "lib/OpenGL/V2.xs"
	{
		GLubyte param[4];
		param[0] = x;
		param[1] = y;
		param[2] = z;
		param[3] = w;
		glVertexAttrib4NubvARB(index,param);
	}
#line 2777 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glVertexAttrib4NuivARB_c); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glVertexAttrib4NuivARB_c)
{
    dVAR; dXSARGS;
    if (items != 2)
       croak_xs_usage(cv,  "index, v");
    {
	GLuint	index = (unsigned int)SvUV(ST(0))
;
	void *	v = INT2PTR(void *,SvIV(ST(1)))
;
#line 1376 "lib/OpenGL/V2.xs"
		loadProc(glVertexAttrib4NuivARB,"glVertexAttrib4NuivARB");
#line 2796 "lib/OpenGL/V2.c"
#line 1378 "lib/OpenGL/V2.xs"
		glVertexAttrib4NuivARB(index,(GLuint*)v);
#line 2799 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glVertexAttrib4NuivARB_s); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glVertexAttrib4NuivARB_s)
{
    dVAR; dXSARGS;
    if (items != 2)
       croak_xs_usage(cv,  "index, v");
    {
	GLuint	index = (unsigned int)SvUV(ST(0))
;
	SV *	v = ST(1)
;
#line 1386 "lib/OpenGL/V2.xs"
		loadProc(glVertexAttrib4NuivARB,"glVertexAttrib4NuivARB");
#line 2818 "lib/OpenGL/V2.c"
#line 1388 "lib/OpenGL/V2.xs"
	{
		GLuint * v_s = EL(v, sizeof(GLuint)*4);
		glVertexAttrib4NuivARB(index,v_s);
	}
#line 2824 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glVertexAttrib4NuivARB_p); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glVertexAttrib4NuivARB_p)
{
    dVAR; dXSARGS;
    if (items != 5)
       croak_xs_usage(cv,  "index, x, y, z, w");
    {
	GLuint	index = (unsigned int)SvUV(ST(0))
;
	GLuint	x = (unsigned int)SvUV(ST(1))
;
	GLuint	y = (unsigned int)SvUV(ST(2))
;
	GLuint	z = (unsigned int)SvUV(ST(3))
;
	GLuint	w = (unsigned int)SvUV(ST(4))
;
#line 1402 "lib/OpenGL/V2.xs"
		loadProc(glVertexAttrib4NuivARB,"glVertexAttrib4NuivARB");
#line 2849 "lib/OpenGL/V2.c"
#line 1404 "lib/OpenGL/V2.xs"
	{
		GLuint param[4];
		param[0] = x;
		param[1] = y;
		param[2] = z;
		param[3] = w;
		glVertexAttrib4NuivARB(index,param);
	}
#line 2859 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glVertexAttrib4NusvARB_c); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glVertexAttrib4NusvARB_c)
{
    dVAR; dXSARGS;
    if (items != 2)
       croak_xs_usage(cv,  "index, v");
    {
	GLuint	index = (unsigned int)SvUV(ST(0))
;
	void *	v = INT2PTR(void *,SvIV(ST(1)))
;
#line 1419 "lib/OpenGL/V2.xs"
		loadProc(glVertexAttrib4NusvARB,"glVertexAttrib4NusvARB");
#line 2878 "lib/OpenGL/V2.c"
#line 1421 "lib/OpenGL/V2.xs"
		glVertexAttrib4NusvARB(index,(GLushort*)v);
#line 2881 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glVertexAttrib4NusvARB_s); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glVertexAttrib4NusvARB_s)
{
    dVAR; dXSARGS;
    if (items != 2)
       croak_xs_usage(cv,  "index, v");
    {
	GLuint	index = (unsigned int)SvUV(ST(0))
;
	SV *	v = ST(1)
;
#line 1429 "lib/OpenGL/V2.xs"
		loadProc(glVertexAttrib4NusvARB,"glVertexAttrib4NusvARB");
#line 2900 "lib/OpenGL/V2.c"
#line 1431 "lib/OpenGL/V2.xs"
	{
		GLushort * v_s = EL(v, sizeof(GLushort)*4);
		glVertexAttrib4NusvARB(index,v_s);
	}
#line 2906 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glVertexAttrib4NusvARB_p); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glVertexAttrib4NusvARB_p)
{
    dVAR; dXSARGS;
    if (items != 5)
       croak_xs_usage(cv,  "index, x, y, z, w");
    {
	GLuint	index = (unsigned int)SvUV(ST(0))
;
	GLushort	x = (unsigned short)SvUV(ST(1))
;
	GLushort	y = (unsigned short)SvUV(ST(2))
;
	GLushort	z = (unsigned short)SvUV(ST(3))
;
	GLushort	w = (unsigned short)SvUV(ST(4))
;
#line 1445 "lib/OpenGL/V2.xs"
		loadProc(glVertexAttrib4NusvARB,"glVertexAttrib4NusvARB");
#line 2931 "lib/OpenGL/V2.c"
#line 1447 "lib/OpenGL/V2.xs"
	{
		GLushort param[4];
		param[0] = x;
		param[1] = y;
		param[2] = z;
		param[3] = w;
		glVertexAttrib4NusvARB(index,param);
	}
#line 2941 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glVertexAttrib4bvARB_c); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glVertexAttrib4bvARB_c)
{
    dVAR; dXSARGS;
    if (items != 2)
       croak_xs_usage(cv,  "index, v");
    {
	GLuint	index = (unsigned int)SvUV(ST(0))
;
	void *	v = INT2PTR(void *,SvIV(ST(1)))
;
#line 1462 "lib/OpenGL/V2.xs"
		loadProc(glVertexAttrib4bvARB,"glVertexAttrib4bvARB");
#line 2960 "lib/OpenGL/V2.c"
#line 1464 "lib/OpenGL/V2.xs"
		glVertexAttrib4bvARB(index,(GLbyte*)v);
#line 2963 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glVertexAttrib4bvARB_s); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glVertexAttrib4bvARB_s)
{
    dVAR; dXSARGS;
    if (items != 2)
       croak_xs_usage(cv,  "index, v");
    {
	GLuint	index = (unsigned int)SvUV(ST(0))
;
	SV *	v = ST(1)
;
#line 1472 "lib/OpenGL/V2.xs"
		loadProc(glVertexAttrib4bvARB,"glVertexAttrib4bvARB");
#line 2982 "lib/OpenGL/V2.c"
#line 1474 "lib/OpenGL/V2.xs"
	{
		GLbyte * v_s = EL(v, sizeof(GLbyte)*4);
		glVertexAttrib4bvARB(index,v_s);
	}
#line 2988 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glVertexAttrib4bvARB_p); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glVertexAttrib4bvARB_p)
{
    dVAR; dXSARGS;
    if (items != 5)
       croak_xs_usage(cv,  "index, x, y, z, w");
    {
	GLuint	index = (unsigned int)SvUV(ST(0))
;
	GLbyte	x = (int)SvIV(ST(1))
;
	GLbyte	y = (int)SvIV(ST(2))
;
	GLbyte	z = (int)SvIV(ST(3))
;
	GLbyte	w = (int)SvIV(ST(4))
;
#line 1488 "lib/OpenGL/V2.xs"
		loadProc(glVertexAttrib4bvARB,"glVertexAttrib4bvARB");
#line 3013 "lib/OpenGL/V2.c"
#line 1490 "lib/OpenGL/V2.xs"
	{
		GLbyte param[4];
		param[0] = x;
		param[1] = y;
		param[2] = z;
		param[3] = w;
		glVertexAttrib4bvARB(index,param);
	}
#line 3023 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glVertexAttrib4dARB); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glVertexAttrib4dARB)
{
    dVAR; dXSARGS;
    if (items != 5)
       croak_xs_usage(cv,  "index, x, y, z, w");
    {
	GLuint	index = (unsigned int)SvUV(ST(0))
;
	GLdouble	x = (double)SvNV(ST(1))
;
	GLdouble	y = (double)SvNV(ST(2))
;
	GLdouble	z = (double)SvNV(ST(3))
;
	GLdouble	w = (double)SvNV(ST(4))
;
#line 1508 "lib/OpenGL/V2.xs"
		loadProc(glVertexAttrib4dARB,"glVertexAttrib4dARB");
#line 3048 "lib/OpenGL/V2.c"

	glVertexAttrib4dARB(index, x, y, z, w);
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glVertexAttrib4dvARB_c); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glVertexAttrib4dvARB_c)
{
    dVAR; dXSARGS;
    if (items != 2)
       croak_xs_usage(cv,  "index, v");
    {
	GLuint	index = (unsigned int)SvUV(ST(0))
;
	void *	v = INT2PTR(void *,SvIV(ST(1)))
;
#line 1516 "lib/OpenGL/V2.xs"
		loadProc(glVertexAttrib4dvARB,"glVertexAttrib4dvARB");
#line 3069 "lib/OpenGL/V2.c"
#line 1518 "lib/OpenGL/V2.xs"
		glVertexAttrib4dvARB(index,(GLdouble*)v);
#line 3072 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glVertexAttrib4dvARB_s); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glVertexAttrib4dvARB_s)
{
    dVAR; dXSARGS;
    if (items != 2)
       croak_xs_usage(cv,  "index, v");
    {
	GLuint	index = (unsigned int)SvUV(ST(0))
;
	SV *	v = ST(1)
;
#line 1526 "lib/OpenGL/V2.xs"
		loadProc(glVertexAttrib4dvARB,"glVertexAttrib4dvARB");
#line 3091 "lib/OpenGL/V2.c"
#line 1528 "lib/OpenGL/V2.xs"
	{
		GLdouble * v_s = EL(v, sizeof(GLdouble)*4);
		glVertexAttrib4dvARB(index,v_s);
	}
#line 3097 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glVertexAttrib4dvARB_p); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glVertexAttrib4dvARB_p)
{
    dVAR; dXSARGS;
    if (items != 5)
       croak_xs_usage(cv,  "index, x, y, z, w");
    {
	GLuint	index = (unsigned int)SvUV(ST(0))
;
	GLdouble	x = (double)SvNV(ST(1))
;
	GLdouble	y = (double)SvNV(ST(2))
;
	GLdouble	z = (double)SvNV(ST(3))
;
	GLdouble	w = (double)SvNV(ST(4))
;
#line 1543 "lib/OpenGL/V2.xs"
		loadProc(glVertexAttrib4dvARB,"glVertexAttrib4dvARB");
#line 3122 "lib/OpenGL/V2.c"
#line 1545 "lib/OpenGL/V2.xs"
	{
		GLdouble param[4];
		param[0] = x;
		param[1] = y;
		param[2] = z;
		param[3] = w;
		glVertexAttrib4dvARB(index,param);
	}
#line 3132 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glVertexAttrib4fARB); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glVertexAttrib4fARB)
{
    dVAR; dXSARGS;
    if (items != 5)
       croak_xs_usage(cv,  "index, x, y, z, w");
    {
	GLuint	index = (unsigned int)SvUV(ST(0))
;
	GLfloat	x = (float)SvNV(ST(1))
;
	GLfloat	y = (float)SvNV(ST(2))
;
	GLfloat	z = (float)SvNV(ST(3))
;
	GLfloat	w = (float)SvNV(ST(4))
;
#line 1563 "lib/OpenGL/V2.xs"
		loadProc(glVertexAttrib4fARB,"glVertexAttrib4fARB");
#line 3157 "lib/OpenGL/V2.c"

	glVertexAttrib4fARB(index, x, y, z, w);
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glVertexAttrib4fvARB_c); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glVertexAttrib4fvARB_c)
{
    dVAR; dXSARGS;
    if (items != 2)
       croak_xs_usage(cv,  "index, v");
    {
	GLuint	index = (unsigned int)SvUV(ST(0))
;
	void *	v = INT2PTR(void *,SvIV(ST(1)))
;
#line 1571 "lib/OpenGL/V2.xs"
		loadProc(glVertexAttrib4fvARB,"glVertexAttrib4fvARB");
#line 3178 "lib/OpenGL/V2.c"
#line 1573 "lib/OpenGL/V2.xs"
		glVertexAttrib4fvARB(index,(GLfloat*)v);
#line 3181 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glVertexAttrib4fvARB_s); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glVertexAttrib4fvARB_s)
{
    dVAR; dXSARGS;
    if (items != 2)
       croak_xs_usage(cv,  "index, v");
    {
	GLuint	index = (unsigned int)SvUV(ST(0))
;
	SV *	v = ST(1)
;
#line 1581 "lib/OpenGL/V2.xs"
		loadProc(glVertexAttrib4fvARB,"glVertexAttrib4fvARB");
#line 3200 "lib/OpenGL/V2.c"
#line 1583 "lib/OpenGL/V2.xs"
	{
		GLfloat * v_s = EL(v, sizeof(GLfloat)*4);
		glVertexAttrib4fvARB(index,v_s);
	}
#line 3206 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glVertexAttrib4fvARB_p); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glVertexAttrib4fvARB_p)
{
    dVAR; dXSARGS;
    if (items != 5)
       croak_xs_usage(cv,  "index, x, y, z, w");
    {
	GLuint	index = (unsigned int)SvUV(ST(0))
;
	GLfloat	x = (float)SvNV(ST(1))
;
	GLfloat	y = (float)SvNV(ST(2))
;
	GLfloat	z = (float)SvNV(ST(3))
;
	GLfloat	w = (float)SvNV(ST(4))
;
#line 1598 "lib/OpenGL/V2.xs"
		loadProc(glVertexAttrib4fvARB,"glVertexAttrib4fvARB");
#line 3231 "lib/OpenGL/V2.c"
#line 1600 "lib/OpenGL/V2.xs"
	{
		GLfloat param[4];
		param[0] = x;
		param[1] = y;
		param[2] = z;
		param[3] = w;
		glVertexAttrib4fvARB(index,param);
	}
#line 3241 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glVertexAttrib4ivARB_c); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glVertexAttrib4ivARB_c)
{
    dVAR; dXSARGS;
    if (items != 2)
       croak_xs_usage(cv,  "index, v");
    {
	GLuint	index = (unsigned int)SvUV(ST(0))
;
	void *	v = INT2PTR(void *,SvIV(ST(1)))
;
#line 1615 "lib/OpenGL/V2.xs"
		loadProc(glVertexAttrib4ivARB,"glVertexAttrib4ivARB");
#line 3260 "lib/OpenGL/V2.c"
#line 1617 "lib/OpenGL/V2.xs"
		glVertexAttrib4ivARB(index,(GLint*)v);
#line 3263 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glVertexAttrib4ivARB_s); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glVertexAttrib4ivARB_s)
{
    dVAR; dXSARGS;
    if (items != 2)
       croak_xs_usage(cv,  "index, v");
    {
	GLuint	index = (unsigned int)SvUV(ST(0))
;
	SV *	v = ST(1)
;
#line 1625 "lib/OpenGL/V2.xs"
		loadProc(glVertexAttrib4ivARB,"glVertexAttrib4ivARB");
#line 3282 "lib/OpenGL/V2.c"
#line 1627 "lib/OpenGL/V2.xs"
	{
		GLint * v_s = EL(v, sizeof(GLint)*4);
		glVertexAttrib4ivARB(index,v_s);
	}
#line 3288 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glVertexAttrib4ivARB_p); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glVertexAttrib4ivARB_p)
{
    dVAR; dXSARGS;
    if (items != 5)
       croak_xs_usage(cv,  "index, x, y, z, w");
    {
	GLuint	index = (unsigned int)SvUV(ST(0))
;
	GLint	x = (int)SvIV(ST(1))
;
	GLint	y = (int)SvIV(ST(2))
;
	GLint	z = (int)SvIV(ST(3))
;
	GLint	w = (int)SvIV(ST(4))
;
#line 1641 "lib/OpenGL/V2.xs"
		loadProc(glVertexAttrib4ivARB,"glVertexAttrib4ivARB");
#line 3313 "lib/OpenGL/V2.c"
#line 1643 "lib/OpenGL/V2.xs"
	{
		GLint param[4];
		param[0] = x;
		param[1] = y;
		param[2] = z;
		param[3] = w;
		glVertexAttrib4ivARB(index,param);
	}
#line 3323 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glVertexAttrib4sARB); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glVertexAttrib4sARB)
{
    dVAR; dXSARGS;
    if (items != 5)
       croak_xs_usage(cv,  "index, x, y, z, w");
    {
	GLuint	index = (unsigned int)SvUV(ST(0))
;
	GLshort	x = (short)SvIV(ST(1))
;
	GLshort	y = (short)SvIV(ST(2))
;
	GLshort	z = (short)SvIV(ST(3))
;
	GLshort	w = (short)SvIV(ST(4))
;
#line 1661 "lib/OpenGL/V2.xs"
		loadProc(glVertexAttrib4sARB,"glVertexAttrib4sARB");
#line 3348 "lib/OpenGL/V2.c"

	glVertexAttrib4sARB(index, x, y, z, w);
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glVertexAttrib4svARB_c); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glVertexAttrib4svARB_c)
{
    dVAR; dXSARGS;
    if (items != 2)
       croak_xs_usage(cv,  "index, v");
    {
	GLuint	index = (unsigned int)SvUV(ST(0))
;
	void *	v = INT2PTR(void *,SvIV(ST(1)))
;
#line 1669 "lib/OpenGL/V2.xs"
		loadProc(glVertexAttrib4svARB,"glVertexAttrib4svARB");
#line 3369 "lib/OpenGL/V2.c"
#line 1671 "lib/OpenGL/V2.xs"
		glVertexAttrib4svARB(index,(GLshort*)v);
#line 3372 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glVertexAttrib4svARB_s); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glVertexAttrib4svARB_s)
{
    dVAR; dXSARGS;
    if (items != 2)
       croak_xs_usage(cv,  "index, v");
    {
	GLuint	index = (unsigned int)SvUV(ST(0))
;
	SV *	v = ST(1)
;
#line 1679 "lib/OpenGL/V2.xs"
		loadProc(glVertexAttrib4svARB,"glVertexAttrib4svARB");
#line 3391 "lib/OpenGL/V2.c"
#line 1681 "lib/OpenGL/V2.xs"
	{
		GLshort * v_s = EL(v, sizeof(GLshort)*4);
		glVertexAttrib4svARB(index,v_s);
	}
#line 3397 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glVertexAttrib4svARB_p); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glVertexAttrib4svARB_p)
{
    dVAR; dXSARGS;
    if (items != 5)
       croak_xs_usage(cv,  "index, x, y, z, w");
    {
	GLuint	index = (unsigned int)SvUV(ST(0))
;
	GLshort	x = (short)SvIV(ST(1))
;
	GLshort	y = (short)SvIV(ST(2))
;
	GLshort	z = (short)SvIV(ST(3))
;
	GLshort	w = (short)SvIV(ST(4))
;
#line 1696 "lib/OpenGL/V2.xs"
		loadProc(glVertexAttrib4svARB,"glVertexAttrib4svARB");
#line 3422 "lib/OpenGL/V2.c"
#line 1698 "lib/OpenGL/V2.xs"
	{
		GLshort param[4];
		param[0] = x;
		param[1] = y;
		param[2] = z;
		param[3] = w;
		glVertexAttrib4svARB(index,param);
	}
#line 3432 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glVertexAttrib4ubvARB_c); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glVertexAttrib4ubvARB_c)
{
    dVAR; dXSARGS;
    if (items != 2)
       croak_xs_usage(cv,  "index, v");
    {
	GLuint	index = (unsigned int)SvUV(ST(0))
;
	void *	v = INT2PTR(void *,SvIV(ST(1)))
;
#line 1713 "lib/OpenGL/V2.xs"
		loadProc(glVertexAttrib4ubvARB,"glVertexAttrib4ubvARB");
#line 3451 "lib/OpenGL/V2.c"
#line 1715 "lib/OpenGL/V2.xs"
		glVertexAttrib4ubvARB(index,(GLubyte*)v);
#line 3454 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glVertexAttrib4ubvARB_s); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glVertexAttrib4ubvARB_s)
{
    dVAR; dXSARGS;
    if (items != 2)
       croak_xs_usage(cv,  "index, v");
    {
	GLuint	index = (unsigned int)SvUV(ST(0))
;
	SV *	v = ST(1)
;
#line 1723 "lib/OpenGL/V2.xs"
		loadProc(glVertexAttrib4ubvARB,"glVertexAttrib4ubvARB");
#line 3473 "lib/OpenGL/V2.c"
#line 1725 "lib/OpenGL/V2.xs"
	{
		GLubyte * v_s = EL(v, sizeof(GLubyte)*4);
		glVertexAttrib4ubvARB(index,v_s);
	}
#line 3479 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glVertexAttrib4ubvARB_p); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glVertexAttrib4ubvARB_p)
{
    dVAR; dXSARGS;
    if (items != 5)
       croak_xs_usage(cv,  "index, x, y, z, w");
    {
	GLuint	index = (unsigned int)SvUV(ST(0))
;
	GLubyte	x = (unsigned int)SvUV(ST(1))
;
	GLubyte	y = (unsigned int)SvUV(ST(2))
;
	GLubyte	z = (unsigned int)SvUV(ST(3))
;
	GLubyte	w = (unsigned int)SvUV(ST(4))
;
#line 1739 "lib/OpenGL/V2.xs"
		loadProc(glVertexAttrib4ubvARB,"glVertexAttrib4ubvARB");
#line 3504 "lib/OpenGL/V2.c"
#line 1741 "lib/OpenGL/V2.xs"
	{
		GLubyte param[4];
		param[0] = x;
		param[1] = y;
		param[2] = z;
		param[3] = w;
		glVertexAttrib4ubvARB(index,param);
	}
#line 3514 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glVertexAttrib4uivARB_c); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glVertexAttrib4uivARB_c)
{
    dVAR; dXSARGS;
    if (items != 2)
       croak_xs_usage(cv,  "index, v");
    {
	GLuint	index = (unsigned int)SvUV(ST(0))
;
	void *	v = INT2PTR(void *,SvIV(ST(1)))
;
#line 1756 "lib/OpenGL/V2.xs"
		loadProc(glVertexAttrib4uivARB,"glVertexAttrib4uivARB");
#line 3533 "lib/OpenGL/V2.c"
#line 1758 "lib/OpenGL/V2.xs"
		glVertexAttrib4uivARB(index,(GLuint*)v);
#line 3536 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glVertexAttrib4uivARB_s); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glVertexAttrib4uivARB_s)
{
    dVAR; dXSARGS;
    if (items != 2)
       croak_xs_usage(cv,  "index, v");
    {
	GLuint	index = (unsigned int)SvUV(ST(0))
;
	SV *	v = ST(1)
;
#line 1766 "lib/OpenGL/V2.xs"
		loadProc(glVertexAttrib4uivARB,"glVertexAttrib4uivARB");
#line 3555 "lib/OpenGL/V2.c"
#line 1768 "lib/OpenGL/V2.xs"
	{
		GLuint * v_s = EL(v, sizeof(GLuint)*4);
		glVertexAttrib4uivARB(index,v_s);
	}
#line 3561 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glVertexAttrib4uivARB_p); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glVertexAttrib4uivARB_p)
{
    dVAR; dXSARGS;
    if (items != 5)
       croak_xs_usage(cv,  "index, x, y, z, w");
    {
	GLuint	index = (unsigned int)SvUV(ST(0))
;
	GLuint	x = (unsigned int)SvUV(ST(1))
;
	GLuint	y = (unsigned int)SvUV(ST(2))
;
	GLuint	z = (unsigned int)SvUV(ST(3))
;
	GLuint	w = (unsigned int)SvUV(ST(4))
;
#line 1782 "lib/OpenGL/V2.xs"
		loadProc(glVertexAttrib4uivARB,"glVertexAttrib4uivARB");
#line 3586 "lib/OpenGL/V2.c"
#line 1784 "lib/OpenGL/V2.xs"
	{
		GLuint param[4];
		param[0] = x;
		param[1] = y;
		param[2] = z;
		param[3] = w;
		glVertexAttrib4uivARB(index,param);
	}
#line 3596 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glVertexAttrib4usvARB_c); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glVertexAttrib4usvARB_c)
{
    dVAR; dXSARGS;
    if (items != 2)
       croak_xs_usage(cv,  "index, v");
    {
	GLuint	index = (unsigned int)SvUV(ST(0))
;
	void *	v = INT2PTR(void *,SvIV(ST(1)))
;
#line 1799 "lib/OpenGL/V2.xs"
		loadProc(glVertexAttrib4usvARB,"glVertexAttrib4usvARB");
#line 3615 "lib/OpenGL/V2.c"
#line 1801 "lib/OpenGL/V2.xs"
		glVertexAttrib4usvARB(index,(GLushort*)v);
#line 3618 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glVertexAttrib4usvARB_s); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glVertexAttrib4usvARB_s)
{
    dVAR; dXSARGS;
    if (items != 2)
       croak_xs_usage(cv,  "index, v");
    {
	GLuint	index = (unsigned int)SvUV(ST(0))
;
	SV *	v = ST(1)
;
#line 1809 "lib/OpenGL/V2.xs"
		loadProc(glVertexAttrib4usvARB,"glVertexAttrib4usvARB");
#line 3637 "lib/OpenGL/V2.c"
#line 1811 "lib/OpenGL/V2.xs"
	{
		GLushort * v_s = EL(v, sizeof(GLushort)*4);
		glVertexAttrib4usvARB(index,v_s);
	}
#line 3643 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glVertexAttrib4usvARB_p); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glVertexAttrib4usvARB_p)
{
    dVAR; dXSARGS;
    if (items != 5)
       croak_xs_usage(cv,  "index, x, y, z, w");
    {
	GLuint	index = (unsigned int)SvUV(ST(0))
;
	GLushort	x = (unsigned short)SvUV(ST(1))
;
	GLushort	y = (unsigned short)SvUV(ST(2))
;
	GLushort	z = (unsigned short)SvUV(ST(3))
;
	GLushort	w = (unsigned short)SvUV(ST(4))
;
#line 1825 "lib/OpenGL/V2.xs"
		loadProc(glVertexAttrib4usvARB,"glVertexAttrib4usvARB");
#line 3668 "lib/OpenGL/V2.c"
#line 1827 "lib/OpenGL/V2.xs"
	{
		GLushort param[4];
		param[0] = x;
		param[1] = y;
		param[2] = z;
		param[3] = w;
		glVertexAttrib4usvARB(index,param);
	}
#line 3678 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glVertexAttribPointerARB_c); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glVertexAttribPointerARB_c)
{
    dVAR; dXSARGS;
    if (items != 6)
       croak_xs_usage(cv,  "index, size, type, normalized, stride, pointer");
    {
	GLuint	index = (unsigned int)SvUV(ST(0))
;
	GLint	size = (int)SvIV(ST(1))
;
	GLenum	type = (int)SvIV(ST(2))
;
	GLboolean	normalized = (bool)SvTRUE(ST(3))
;
	GLsizei	stride = (int)SvIV(ST(4))
;
	void *	pointer = INT2PTR(void *,SvIV(ST(5)))
;
#line 1846 "lib/OpenGL/V2.xs"
		loadProc(glVertexAttribPointerARB,"glVertexAttribPointerARB");
#line 3705 "lib/OpenGL/V2.c"
#line 1848 "lib/OpenGL/V2.xs"
		glVertexAttribPointerARB(index,size,type,
			normalized,stride,pointer);
#line 3709 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glVertexAttribPointerARB_p); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glVertexAttribPointerARB_p)
{
    dVAR; dXSARGS;
    if (items < 4)
       croak_xs_usage(cv,  "index, type, normalized, stride, ...");
    {
	GLuint	index = (unsigned int)SvUV(ST(0))
;
	GLenum	type = (int)SvIV(ST(1))
;
	GLboolean	normalized = (bool)SvTRUE(ST(2))
;
	GLsizei	stride = (int)SvIV(ST(3))
;
#line 1859 "lib/OpenGL/V2.xs"
		loadProc(glVertexAttribPointerARB,"glVertexAttribPointerARB");
#line 3732 "lib/OpenGL/V2.c"
#line 1861 "lib/OpenGL/V2.xs"
	{
		GLuint count = items - 4;
		GLuint size = gl_type_size(type);
		void * pointer = malloc(count * size);

		SvItems(type,4,count,pointer);

		glVertexAttribPointerARB(index,count,type,
			normalized,stride,pointer);

		free(pointer);
	}
#line 3746 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glEnableVertexAttribArrayARB); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glEnableVertexAttribArrayARB)
{
    dVAR; dXSARGS;
    if (items != 1)
       croak_xs_usage(cv,  "index");
    {
	GLuint	index = (unsigned int)SvUV(ST(0))
;
#line 1879 "lib/OpenGL/V2.xs"
		loadProc(glEnableVertexAttribArrayARB,"glEnableVertexAttribArrayARB");
#line 3763 "lib/OpenGL/V2.c"

	glEnableVertexAttribArrayARB(index);
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glDisableVertexAttribArrayARB); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glDisableVertexAttribArrayARB)
{
    dVAR; dXSARGS;
    if (items != 1)
       croak_xs_usage(cv,  "index");
    {
	GLuint	index = (unsigned int)SvUV(ST(0))
;
#line 1886 "lib/OpenGL/V2.xs"
		loadProc(glDisableVertexAttribArrayARB,"glDisableVertexAttribArrayARB");
#line 3782 "lib/OpenGL/V2.c"

	glDisableVertexAttribArrayARB(index);
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glGetVertexAttribdvARB_c); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glGetVertexAttribdvARB_c)
{
    dVAR; dXSARGS;
    if (items != 3)
       croak_xs_usage(cv,  "index, pname, params");
    {
	GLuint	index = (unsigned int)SvUV(ST(0))
;
	GLenum	pname = (int)SvIV(ST(1))
;
	void *	params = INT2PTR(void *,SvIV(ST(2)))
;
#line 1895 "lib/OpenGL/V2.xs"
		loadProc(glGetVertexAttribdvARB,"glGetVertexAttribdvARB");
#line 3805 "lib/OpenGL/V2.c"
#line 1897 "lib/OpenGL/V2.xs"
		glGetVertexAttribdvARB(index,pname,(GLdouble*)params);
#line 3808 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glGetVertexAttribdvARB_s); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glGetVertexAttribdvARB_s)
{
    dVAR; dXSARGS;
    if (items != 3)
       croak_xs_usage(cv,  "index, pname, params");
    {
	GLuint	index = (unsigned int)SvUV(ST(0))
;
	GLenum	pname = (int)SvIV(ST(1))
;
	SV *	params = ST(2)
;
#line 1906 "lib/OpenGL/V2.xs"
		loadProc(glGetVertexAttribdvARB,"glGetVertexAttribdvARB");
#line 3829 "lib/OpenGL/V2.c"
#line 1908 "lib/OpenGL/V2.xs"
	{
		GLdouble * params_s = EL(params, sizeof(GLdouble) * 4);
		glGetVertexAttribdvARB(index,pname,params_s);
	}
#line 3835 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glGetVertexAttribdvARB_p); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glGetVertexAttribdvARB_p)
{
    dVAR; dXSARGS;
    if (items != 2)
       croak_xs_usage(cv,  "index, pname");
    {
	GLuint	index = (unsigned int)SvUV(ST(0))
;
	GLenum	pname = (int)SvIV(ST(1))
;
	GLdouble	RETVAL;
	dXSTARG;
#line 1919 "lib/OpenGL/V2.xs"
		loadProc(glGetVertexAttribdvARB,"glGetVertexAttribdvARB");
#line 3856 "lib/OpenGL/V2.c"
#line 1921 "lib/OpenGL/V2.xs"
	{
		GLdouble param;
		glGetVertexAttribdvARB(index,pname,(void *)&param);
		RETVAL = param;
	}
#line 3863 "lib/OpenGL/V2.c"
	XSprePUSH;
	PUSHn((double)RETVAL);
    }
    XSRETURN(1);
}


XS_EUPXS(XS_OpenGL_glGetVertexAttribfvARB_c); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glGetVertexAttribfvARB_c)
{
    dVAR; dXSARGS;
    if (items != 3)
       croak_xs_usage(cv,  "index, pname, params");
    {
	GLuint	index = (unsigned int)SvUV(ST(0))
;
	GLenum	pname = (int)SvIV(ST(1))
;
	void *	params = INT2PTR(void *,SvIV(ST(2)))
;
#line 1936 "lib/OpenGL/V2.xs"
		loadProc(glGetVertexAttribfvARB,"glGetVertexAttribfvARB");
#line 3886 "lib/OpenGL/V2.c"
#line 1938 "lib/OpenGL/V2.xs"
		glGetVertexAttribfvARB(index,pname,(GLfloat*)params);
#line 3889 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glGetVertexAttribfvARB_s); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glGetVertexAttribfvARB_s)
{
    dVAR; dXSARGS;
    if (items != 3)
       croak_xs_usage(cv,  "index, pname, params");
    {
	GLuint	index = (unsigned int)SvUV(ST(0))
;
	GLenum	pname = (int)SvIV(ST(1))
;
	SV *	params = ST(2)
;
#line 1947 "lib/OpenGL/V2.xs"
		loadProc(glGetVertexAttribfvARB,"glGetVertexAttribfvARB");
#line 3910 "lib/OpenGL/V2.c"
#line 1949 "lib/OpenGL/V2.xs"
	{
		GLfloat * params_s = EL(params, sizeof(GLfloat) * 4);
		glGetVertexAttribfvARB(index,pname,params_s);
	}
#line 3916 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glGetVertexAttribfvARB_p); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glGetVertexAttribfvARB_p)
{
    dVAR; dXSARGS;
    if (items != 2)
       croak_xs_usage(cv,  "index, pname");
    {
	GLuint	index = (unsigned int)SvUV(ST(0))
;
	GLenum	pname = (int)SvIV(ST(1))
;
	GLfloat	RETVAL;
	dXSTARG;
#line 1960 "lib/OpenGL/V2.xs"
		loadProc(glGetVertexAttribfvARB,"glGetVertexAttribfvARB");
#line 3937 "lib/OpenGL/V2.c"
#line 1962 "lib/OpenGL/V2.xs"
	{
		GLfloat param;
		glGetVertexAttribfvARB(index,pname,(void *)&param);
		RETVAL = param;
	}
#line 3944 "lib/OpenGL/V2.c"
	XSprePUSH;
	PUSHn((double)RETVAL);
    }
    XSRETURN(1);
}


XS_EUPXS(XS_OpenGL_glGetVertexAttribivARB_c); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glGetVertexAttribivARB_c)
{
    dVAR; dXSARGS;
    if (items != 3)
       croak_xs_usage(cv,  "index, pname, params");
    {
	GLuint	index = (unsigned int)SvUV(ST(0))
;
	GLenum	pname = (int)SvIV(ST(1))
;
	void *	params = INT2PTR(void *,SvIV(ST(2)))
;
#line 1977 "lib/OpenGL/V2.xs"
		loadProc(glGetVertexAttribivARB,"glGetVertexAttribivARB");
#line 3967 "lib/OpenGL/V2.c"
#line 1979 "lib/OpenGL/V2.xs"
		glGetVertexAttribivARB(index,pname,(GLint*)params);
#line 3970 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glGetVertexAttribivARB_s); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glGetVertexAttribivARB_s)
{
    dVAR; dXSARGS;
    if (items != 3)
       croak_xs_usage(cv,  "index, pname, params");
    {
	GLuint	index = (unsigned int)SvUV(ST(0))
;
	GLenum	pname = (int)SvIV(ST(1))
;
	SV *	params = ST(2)
;
#line 1988 "lib/OpenGL/V2.xs"
		loadProc(glGetVertexAttribivARB,"glGetVertexAttribivARB");
#line 3991 "lib/OpenGL/V2.c"
#line 1990 "lib/OpenGL/V2.xs"
	{
		GLint * params_s = EL(params, sizeof(GLint) * 4);
		glGetVertexAttribivARB(index,pname,params_s);
	}
#line 3997 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glGetVertexAttribivARB_p); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glGetVertexAttribivARB_p)
{
    dVAR; dXSARGS;
    if (items != 2)
       croak_xs_usage(cv,  "index, pname");
    {
	GLuint	index = (unsigned int)SvUV(ST(0))
;
	GLenum	pname = (int)SvIV(ST(1))
;
	GLuint	RETVAL;
	dXSTARG;
#line 2001 "lib/OpenGL/V2.xs"
		loadProc(glGetVertexAttribivARB,"glGetVertexAttribivARB");
#line 4018 "lib/OpenGL/V2.c"
#line 2003 "lib/OpenGL/V2.xs"
	{
		GLuint param;
		glGetVertexAttribivARB(index,pname,(void *)&param);
		RETVAL = param;
	}
#line 4025 "lib/OpenGL/V2.c"
	XSprePUSH;
	PUSHu((UV)RETVAL);
    }
    XSRETURN(1);
}


XS_EUPXS(XS_OpenGL_glGetVertexAttribPointervARB_c); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glGetVertexAttribPointervARB_c)
{
    dVAR; dXSARGS;
    if (items != 3)
       croak_xs_usage(cv,  "index, pname, pointer");
    {
	GLuint	index = (unsigned int)SvUV(ST(0))
;
	GLenum	pname = (int)SvIV(ST(1))
;
	void *	pointer = INT2PTR(void *,SvIV(ST(2)))
;
#line 2018 "lib/OpenGL/V2.xs"
		loadProc(glGetVertexAttribPointervARB,"glGetVertexAttribPointervARB");
#line 4048 "lib/OpenGL/V2.c"
#line 2020 "lib/OpenGL/V2.xs"
		glGetVertexAttribPointervARB(index,pname,pointer);
#line 4051 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glGetVertexAttribPointervARB_p); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glGetVertexAttribPointervARB_p)
{
    dVAR; dXSARGS;
    if (items != 2)
       croak_xs_usage(cv,  "index, pname");
    PERL_UNUSED_VAR(ax); /* -Wall */
    SP -= items;
    {
	GLuint	index = (unsigned int)SvUV(ST(0))
;
	GLenum	pname = (int)SvIV(ST(1))
;
#line 2028 "lib/OpenGL/V2.xs"
		loadProc(glGetVertexAttribPointervARB,"glGetVertexAttribPointervARB");
		loadProc(glGetVertexAttribivARB,"glGetVertexAttribivARB");
#line 4073 "lib/OpenGL/V2.c"
#line 2031 "lib/OpenGL/V2.xs"
	{
		void * pointer;
		GLuint i,count,type;

		glGetVertexAttribPointervARB(index,pname,&pointer);

		glGetVertexAttribivARB(index,GL_VERTEX_ATTRIB_ARRAY_SIZE_ARB,(void *)&count);
		glGetVertexAttribivARB(index,GL_VERTEX_ATTRIB_ARRAY_TYPE_ARB,(void *)&type);

		EXTEND(sp, count);

		switch (type)
		{
#ifdef GL_VERSION_1_2
			case GL_UNSIGNED_BYTE_3_3_2:
			case GL_UNSIGNED_BYTE_2_3_3_REV:
				for (i=0;i<count;i++)
				{
				  PUSHs(sv_2mortal(newSViv(((GLubyte*)pointer)[i])));
				}
				break;
			case GL_UNSIGNED_SHORT_5_6_5:
			case GL_UNSIGNED_SHORT_5_6_5_REV:
			case GL_UNSIGNED_SHORT_4_4_4_4:
			case GL_UNSIGNED_SHORT_4_4_4_4_REV:
			case GL_UNSIGNED_SHORT_5_5_5_1:
			case GL_UNSIGNED_SHORT_1_5_5_5_REV:
				for (i=0;i<count;i++)
				{
				  PUSHs(sv_2mortal(newSViv(((GLushort*)pointer)[i])));
				}
				break;
			case GL_UNSIGNED_INT_8_8_8_8:
			case GL_UNSIGNED_INT_8_8_8_8_REV:
			case GL_UNSIGNED_INT_10_10_10_2:
			case GL_UNSIGNED_INT_2_10_10_10_REV:
				for (i=0;i<count;i++)
				{
				  PUSHs(sv_2mortal(newSViv(((GLuint*)pointer)[i])));
				}
				break;
#endif
			case GL_UNSIGNED_BYTE:
			case GL_BITMAP:
				for (i=0;i<count;i++)
				{
				  PUSHs(sv_2mortal(newSViv(((GLubyte*)pointer)[i])));
				}
				break;
			case GL_BYTE:
				for (i=0;i<count;i++)
				{
				  PUSHs(sv_2mortal(newSViv(((GLbyte*)pointer)[i])));
				}
				break;
			case GL_UNSIGNED_SHORT:
				for (i=0;i<count;i++)
				{
				  PUSHs(sv_2mortal(newSViv(((GLushort*)pointer)[i])));
				}
				break;
			case GL_SHORT:
				for (i=0;i<count;i++)
				{
				  PUSHs(sv_2mortal(newSViv(((GLushort*)pointer)[i])));
				}
				break;
			case GL_UNSIGNED_INT:
				for (i=0;i<count;i++)
				{
				  PUSHs(sv_2mortal(newSViv(((GLuint*)pointer)[i])));
				}
				break;
			case GL_INT:
				for (i=0;i<count;i++)
				{
				  PUSHs(sv_2mortal(newSViv(((GLint*)pointer)[i])));
				}
				break;
			case GL_FLOAT:
				for (i=0;i<count;i++)
				{
				  PUSHs(sv_2mortal(newSVnv(((GLfloat*)pointer)[i])));
				}
				break;
			case GL_DOUBLE:
				for (i=0;i<count;i++)
				{
				  PUSHs(sv_2mortal(newSVnv(((GLdouble*)pointer)[i])));
				}
				break;
			default:
				croak("unknown type");
		}
	}
#line 4170 "lib/OpenGL/V2.c"
	PUTBACK;
	return;
    }
}

#endif
#ifdef GL_ARB_vertex_shader
#define XSubPPtmpAAAD 1


XS_EUPXS(XS_OpenGL_glBindAttribLocationARB); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glBindAttribLocationARB)
{
    dVAR; dXSARGS;
    if (items != 3)
       croak_xs_usage(cv,  "programObj, index, name");
    {
	GLhandleARB	programObj = (GLhandleARB)SvUV(ST(0))
;
	GLuint	index = (unsigned int)SvUV(ST(1))
;
	void *	name = INT2PTR(void *,SvIV(ST(2)))
;
#line 2139 "lib/OpenGL/V2.xs"
		loadProc(glBindAttribLocationARB,"glBindAttribLocationARB");
#line 4196 "lib/OpenGL/V2.c"
#line 2141 "lib/OpenGL/V2.xs"
		glBindAttribLocationARB(programObj,index,name);
#line 4199 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glGetActiveAttribARB_c); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glGetActiveAttribARB_c)
{
    dVAR; dXSARGS;
    if (items != 7)
       croak_xs_usage(cv,  "programObj, index, maxLength, length, size, type, name");
    {
	GLhandleARB	programObj = (GLhandleARB)SvUV(ST(0))
;
	GLuint	index = (unsigned int)SvUV(ST(1))
;
	GLsizei	maxLength = (int)SvIV(ST(2))
;
	void *	length = INT2PTR(void *,SvIV(ST(3)))
;
	void *	size = INT2PTR(void *,SvIV(ST(4)))
;
	void *	type = INT2PTR(void *,SvIV(ST(5)))
;
	void *	name = INT2PTR(void *,SvIV(ST(6)))
;
#line 2154 "lib/OpenGL/V2.xs"
		loadProc(glGetActiveAttribARB,"glGetActiveAttribARB");
#line 4228 "lib/OpenGL/V2.c"
#line 2156 "lib/OpenGL/V2.xs"
		glGetActiveAttribARB(programObj,index,maxLength,length,size,type,name);
#line 4231 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glGetActiveAttribARB_s); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glGetActiveAttribARB_s)
{
    dVAR; dXSARGS;
    if (items != 7)
       croak_xs_usage(cv,  "programObj, index, maxLength, length, size, type, name");
    {
	GLhandleARB	programObj = (GLhandleARB)SvUV(ST(0))
;
	GLuint	index = (unsigned int)SvUV(ST(1))
;
	GLsizei	maxLength = (int)SvIV(ST(2))
;
	SV *	length = ST(3)
;
	SV *	size = ST(4)
;
	SV *	type = ST(5)
;
	SV *	name = ST(6)
;
#line 2169 "lib/OpenGL/V2.xs"
		loadProc(glGetActiveAttribARB,"glGetActiveAttribARB");
#line 4260 "lib/OpenGL/V2.c"
#line 2171 "lib/OpenGL/V2.xs"
	{
		GLsizei	  *length_s = EL(length, sizeof(GLsizei));
		GLint	  *size_s = EL(size, sizeof(GLint));
		GLenum	  *type_s = EL(type, sizeof(GLenum));
		GLcharARB *name_s = EL(name, sizeof(GLcharARB));
		glGetActiveAttribARB(programObj,index,maxLength,length_s,size_s,type_s,name_s);
	}
#line 4269 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glGetActiveAttribARB_p); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glGetActiveAttribARB_p)
{
    dVAR; dXSARGS;
    if (items != 2)
       croak_xs_usage(cv,  "programObj, index");
    PERL_UNUSED_VAR(ax); /* -Wall */
    SP -= items;
    {
	GLhandleARB	programObj = (GLhandleARB)SvUV(ST(0))
;
	GLuint	index = (unsigned int)SvUV(ST(1))
;
#line 2185 "lib/OpenGL/V2.xs"
		loadProc(glGetObjectParameterivARB,"glGetObjectParameterivARB");
		loadProc(glGetActiveAttribARB,"glGetActiveAttribARB");
#line 4291 "lib/OpenGL/V2.c"
#line 2188 "lib/OpenGL/V2.xs"
	{
		GLsizei maxLength;
		glGetObjectParameterivARB(programObj,GL_OBJECT_ACTIVE_ATTRIBUTES_ARB,
			(GLvoid *)&maxLength);
		if (maxLength)
		{
			GLsizei length;
			GLint size;
			GLenum type;
			GLcharARB *name;

			name = malloc(maxLength+1);
			glGetActiveAttribARB(programObj,index,maxLength,
				&length,&size,&type,name);
			name[length] = 0;

			if (*name)
			{
				EXTEND(sp,3);
				PUSHs(sv_2mortal(newSVpv(name,0)));
				PUSHs(sv_2mortal(newSViv(type)));
				PUSHs(sv_2mortal(newSViv(size)));
			}
			else
			{
				EXTEND(sp,1);
				PUSHs(sv_2mortal(newSVsv(&PL_sv_undef)));
			}

			free(name);
		}
		else
		{
			EXTEND(sp,1);
			PUSHs(sv_2mortal(newSVsv(&PL_sv_undef)));
		}
	}
#line 4330 "lib/OpenGL/V2.c"
	PUTBACK;
	return;
    }
}


XS_EUPXS(XS_OpenGL_glGetAttribLocationARB_c); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glGetAttribLocationARB_c)
{
    dVAR; dXSARGS;
    if (items != 2)
       croak_xs_usage(cv,  "programObj, name");
    {
	GLhandleARB	programObj = (GLhandleARB)SvUV(ST(0))
;
	void *	name = INT2PTR(void *,SvIV(ST(1)))
;
	GLint	RETVAL;
	dXSTARG;
#line 2232 "lib/OpenGL/V2.xs"
		loadProc(glGetAttribLocationARB,"glGetAttribLocationARB");
#line 4352 "lib/OpenGL/V2.c"
#line 2234 "lib/OpenGL/V2.xs"
		RETVAL = glGetAttribLocationARB(programObj, name);
#line 4355 "lib/OpenGL/V2.c"
	XSprePUSH;
	PUSHi((IV)RETVAL);
    }
    XSRETURN(1);
}


XS_EUPXS(XS_OpenGL_glGetAttribLocationARB_p); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glGetAttribLocationARB_p)
{
    dVAR; dXSARGS;
    if (items < 1)
       croak_xs_usage(cv,  "programObj, ...");
    {
	GLhandleARB	programObj = (GLhandleARB)SvUV(ST(0))
;
	GLint	RETVAL;
	dXSTARG;
#line 2244 "lib/OpenGL/V2.xs"
		loadProc(glGetAttribLocationARB,"glGetAttribLocationARB");
#line 4376 "lib/OpenGL/V2.c"
#line 2246 "lib/OpenGL/V2.xs"
	{
		GLcharARB *name = (GLcharARB *)SvPV(ST(1),PL_na);
		RETVAL = glGetAttribLocationARB(programObj, name);
	}
#line 4382 "lib/OpenGL/V2.c"
	XSprePUSH;
	PUSHi((IV)RETVAL);
    }
    XSRETURN(1);
}

#endif
#ifdef GL_ARB_shader_objects
#define XSubPPtmpAAAE 1


XS_EUPXS(XS_OpenGL_glDeleteObjectARB); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glDeleteObjectARB)
{
    dVAR; dXSARGS;
    if (items != 1)
       croak_xs_usage(cv,  "obj");
    {
	GLhandleARB	obj = (GLhandleARB)SvUV(ST(0))
;
#line 2262 "lib/OpenGL/V2.xs"
		loadProc(glDeleteObjectARB,"glDeleteObjectARB");
#line 4405 "lib/OpenGL/V2.c"
#line 2264 "lib/OpenGL/V2.xs"
	{
		glDeleteObjectARB(obj);
	}
#line 4410 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glGetHandleARB); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glGetHandleARB)
{
    dVAR; dXSARGS;
    if (items != 1)
       croak_xs_usage(cv,  "pname");
    {
	GLenum	pname = (int)SvIV(ST(0))
;
	GLhandleARB	RETVAL;
	dXSTARG;
#line 2273 "lib/OpenGL/V2.xs"
		loadProc(glGetHandleARB,"glGetHandleARB");
#line 4429 "lib/OpenGL/V2.c"
#line 2275 "lib/OpenGL/V2.xs"
	{
		RETVAL = glGetHandleARB(pname);
	}
#line 4434 "lib/OpenGL/V2.c"
	XSprePUSH;
	PUSHu((UV)RETVAL);
    }
    XSRETURN(1);
}


XS_EUPXS(XS_OpenGL_glDetachObjectARB); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glDetachObjectARB)
{
    dVAR; dXSARGS;
    if (items != 2)
       croak_xs_usage(cv,  "containerObj, attachedObj");
    {
	GLhandleARB	containerObj = (GLhandleARB)SvUV(ST(0))
;
	GLhandleARB	attachedObj = (GLhandleARB)SvUV(ST(1))
;
#line 2287 "lib/OpenGL/V2.xs"
		loadProc(glDetachObjectARB,"glDetachObjectARB");
#line 4455 "lib/OpenGL/V2.c"
#line 2289 "lib/OpenGL/V2.xs"
	{
		glDetachObjectARB(containerObj, attachedObj);
	}
#line 4460 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glCreateShaderObjectARB); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glCreateShaderObjectARB)
{
    dVAR; dXSARGS;
    if (items != 1)
       croak_xs_usage(cv,  "shaderType");
    {
	GLenum	shaderType = (int)SvIV(ST(0))
;
	GLhandleARB	RETVAL;
	dXSTARG;
#line 2298 "lib/OpenGL/V2.xs"
		loadProc(glCreateShaderObjectARB,"glCreateShaderObjectARB");
#line 4479 "lib/OpenGL/V2.c"
#line 2300 "lib/OpenGL/V2.xs"
	{
		RETVAL = glCreateShaderObjectARB(shaderType);
	}
#line 4484 "lib/OpenGL/V2.c"
	XSprePUSH;
	PUSHu((UV)RETVAL);
    }
    XSRETURN(1);
}


XS_EUPXS(XS_OpenGL_glShaderSourceARB_c); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glShaderSourceARB_c)
{
    dVAR; dXSARGS;
    if (items != 4)
       croak_xs_usage(cv,  "shaderObj, count, string, length");
    {
	GLhandleARB	shaderObj = (GLhandleARB)SvUV(ST(0))
;
	GLsizei	count = (int)SvIV(ST(1))
;
	void *	string = INT2PTR(void *,SvIV(ST(2)))
;
	void *	length = INT2PTR(void *,SvIV(ST(3)))
;
#line 2314 "lib/OpenGL/V2.xs"
		loadProc(glShaderSourceARB,"glShaderSourceARB");
#line 4509 "lib/OpenGL/V2.c"
#line 2316 "lib/OpenGL/V2.xs"
	{
		glShaderSourceARB(shaderObj, count, string, length);
	}
#line 4514 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glShaderSourceARB_p); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glShaderSourceARB_p)
{
    dVAR; dXSARGS;
    if (items < 1)
       croak_xs_usage(cv,  "shaderObj, ...");
    {
	GLhandleARB	shaderObj = (GLhandleARB)SvUV(ST(0))
;
#line 2325 "lib/OpenGL/V2.xs"
		loadProc(glShaderSourceARB,"glShaderSourceARB");
#line 4531 "lib/OpenGL/V2.c"
#line 2327 "lib/OpenGL/V2.xs"
	{
		int i;
		int count = items - 1;
		GLcharARB **string = malloc(sizeof(GLcharARB *) * count);
		GLint *length = malloc(sizeof(GLint) * count);

		for(i=0;i<count;i++) {
			string[i] = (GLcharARB *)SvPV(ST(i+1),PL_na);
			length[i] = strlen(string[i]);
		}

		glShaderSourceARB(shaderObj, count, (const GLcharARB**)string,
			(const GLint *)length);

		free(length);
                free(string);
	}
#line 4550 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glCompileShaderARB); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glCompileShaderARB)
{
    dVAR; dXSARGS;
    if (items != 1)
       croak_xs_usage(cv,  "shaderObj");
    {
	GLhandleARB	shaderObj = (GLhandleARB)SvUV(ST(0))
;
#line 2350 "lib/OpenGL/V2.xs"
		loadProc(glCompileShaderARB,"glCompileShaderARB");
#line 4567 "lib/OpenGL/V2.c"
#line 2352 "lib/OpenGL/V2.xs"
	{
		glCompileShaderARB(shaderObj);
	}
#line 4572 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glCreateProgramObjectARB); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glCreateProgramObjectARB)
{
    dVAR; dXSARGS;
    if (items != 0)
       croak_xs_usage(cv,  "");
    {
	GLhandleARB	RETVAL;
	dXSTARG;
#line 2360 "lib/OpenGL/V2.xs"
		loadProc(glCreateProgramObjectARB,"glCreateProgramObjectARB");
#line 4589 "lib/OpenGL/V2.c"
#line 2362 "lib/OpenGL/V2.xs"
	{
		RETVAL = glCreateProgramObjectARB();
	}
#line 4594 "lib/OpenGL/V2.c"
	XSprePUSH;
	PUSHu((UV)RETVAL);
    }
    XSRETURN(1);
}


XS_EUPXS(XS_OpenGL_glAttachObjectARB); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glAttachObjectARB)
{
    dVAR; dXSARGS;
    if (items != 2)
       croak_xs_usage(cv,  "containerObj, obj");
    {
	GLhandleARB	containerObj = (GLhandleARB)SvUV(ST(0))
;
	GLhandleARB	obj = (GLhandleARB)SvUV(ST(1))
;
#line 2374 "lib/OpenGL/V2.xs"
		loadProc(glAttachObjectARB,"glAttachObjectARB");
#line 4615 "lib/OpenGL/V2.c"
#line 2376 "lib/OpenGL/V2.xs"
	{
		glAttachObjectARB(containerObj, obj);
	}
#line 4620 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glLinkProgramARB); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glLinkProgramARB)
{
    dVAR; dXSARGS;
    if (items != 1)
       croak_xs_usage(cv,  "programObj");
    {
	GLhandleARB	programObj = (GLhandleARB)SvUV(ST(0))
;
#line 2385 "lib/OpenGL/V2.xs"
		loadProc(glLinkProgramARB,"glLinkProgramARB");
#line 4637 "lib/OpenGL/V2.c"
#line 2387 "lib/OpenGL/V2.xs"
	{
		glLinkProgramARB(programObj);
	}
#line 4642 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glUseProgramObjectARB); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glUseProgramObjectARB)
{
    dVAR; dXSARGS;
    if (items != 1)
       croak_xs_usage(cv,  "programObj");
    {
	GLhandleARB	programObj = (GLhandleARB)SvUV(ST(0))
;
#line 2396 "lib/OpenGL/V2.xs"
		loadProc(glUseProgramObjectARB,"glUseProgramObjectARB");
#line 4659 "lib/OpenGL/V2.c"
#line 2398 "lib/OpenGL/V2.xs"
	{
		glUseProgramObjectARB(programObj);
	}
#line 4664 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glValidateProgramARB); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glValidateProgramARB)
{
    dVAR; dXSARGS;
    if (items != 1)
       croak_xs_usage(cv,  "programObj");
    {
	GLhandleARB	programObj = (GLhandleARB)SvUV(ST(0))
;
#line 2407 "lib/OpenGL/V2.xs"
		loadProc(glValidateProgramARB,"glValidateProgramARB");
#line 4681 "lib/OpenGL/V2.c"
#line 2409 "lib/OpenGL/V2.xs"
	{
		glValidateProgramARB(programObj);
	}
#line 4686 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glUniform1fARB); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glUniform1fARB)
{
    dVAR; dXSARGS;
    if (items != 2)
       croak_xs_usage(cv,  "location, v0");
    {
	GLint	location = (int)SvIV(ST(0))
;
	GLfloat	v0 = (float)SvNV(ST(1))
;
#line 2419 "lib/OpenGL/V2.xs"
		loadProc(glUniform1fARB,"glUniform1fARB");
#line 4705 "lib/OpenGL/V2.c"
#line 2421 "lib/OpenGL/V2.xs"
	{
		glUniform1fARB(location, v0);
	}
#line 4710 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glUniform2fARB); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glUniform2fARB)
{
    dVAR; dXSARGS;
    if (items != 3)
       croak_xs_usage(cv,  "location, v0, v1");
    {
	GLint	location = (int)SvIV(ST(0))
;
	GLfloat	v0 = (float)SvNV(ST(1))
;
	GLfloat	v1 = (float)SvNV(ST(2))
;
#line 2432 "lib/OpenGL/V2.xs"
		loadProc(glUniform2fARB,"glUniform2fARB");
#line 4731 "lib/OpenGL/V2.c"
#line 2434 "lib/OpenGL/V2.xs"
	{
		glUniform2fARB(location, v0, v1);
	}
#line 4736 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glUniform3fARB); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glUniform3fARB)
{
    dVAR; dXSARGS;
    if (items != 4)
       croak_xs_usage(cv,  "location, v0, v1, v2");
    {
	GLint	location = (int)SvIV(ST(0))
;
	GLfloat	v0 = (float)SvNV(ST(1))
;
	GLfloat	v1 = (float)SvNV(ST(2))
;
	GLfloat	v2 = (float)SvNV(ST(3))
;
#line 2446 "lib/OpenGL/V2.xs"
		loadProc(glUniform3fARB,"glUniform3fARB");
#line 4759 "lib/OpenGL/V2.c"
#line 2448 "lib/OpenGL/V2.xs"
	{
		glUniform3fARB(location, v0, v1, v2);
	}
#line 4764 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glUniform4fARB); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glUniform4fARB)
{
    dVAR; dXSARGS;
    if (items != 5)
       croak_xs_usage(cv,  "location, v0, v1, v2, v3");
    {
	GLint	location = (int)SvIV(ST(0))
;
	GLfloat	v0 = (float)SvNV(ST(1))
;
	GLfloat	v1 = (float)SvNV(ST(2))
;
	GLfloat	v2 = (float)SvNV(ST(3))
;
	GLfloat	v3 = (float)SvNV(ST(4))
;
#line 2461 "lib/OpenGL/V2.xs"
		loadProc(glUniform4fARB,"glUniform4fARB");
#line 4789 "lib/OpenGL/V2.c"
#line 2463 "lib/OpenGL/V2.xs"
	{
		glUniform4fARB(location, v0, v1, v2, v3);
	}
#line 4794 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glUniform1iARB); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glUniform1iARB)
{
    dVAR; dXSARGS;
    if (items != 2)
       croak_xs_usage(cv,  "location, v0");
    {
	GLint	location = (int)SvIV(ST(0))
;
	GLint	v0 = (int)SvIV(ST(1))
;
#line 2473 "lib/OpenGL/V2.xs"
		loadProc(glUniform1iARB,"glUniform1iARB");
#line 4813 "lib/OpenGL/V2.c"
#line 2475 "lib/OpenGL/V2.xs"
	{
		glUniform1iARB(location, v0);
	}
#line 4818 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glUniform2iARB); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glUniform2iARB)
{
    dVAR; dXSARGS;
    if (items != 3)
       croak_xs_usage(cv,  "location, v0, v1");
    {
	GLint	location = (int)SvIV(ST(0))
;
	GLint	v0 = (int)SvIV(ST(1))
;
	GLint	v1 = (int)SvIV(ST(2))
;
#line 2486 "lib/OpenGL/V2.xs"
		loadProc(glUniform2iARB,"glUniform2iARB");
#line 4839 "lib/OpenGL/V2.c"
#line 2488 "lib/OpenGL/V2.xs"
	{
		glUniform2iARB(location, v0, v1);
	}
#line 4844 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glUniform3iARB); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glUniform3iARB)
{
    dVAR; dXSARGS;
    if (items != 4)
       croak_xs_usage(cv,  "location, v0, v1, v2");
    {
	GLint	location = (int)SvIV(ST(0))
;
	GLint	v0 = (int)SvIV(ST(1))
;
	GLint	v1 = (int)SvIV(ST(2))
;
	GLint	v2 = (int)SvIV(ST(3))
;
#line 2500 "lib/OpenGL/V2.xs"
		loadProc(glUniform3iARB,"glUniform3iARB");
#line 4867 "lib/OpenGL/V2.c"
#line 2502 "lib/OpenGL/V2.xs"
	{
		glUniform3iARB(location, v0, v1, v2);
	}
#line 4872 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glUniform4iARB); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glUniform4iARB)
{
    dVAR; dXSARGS;
    if (items != 5)
       croak_xs_usage(cv,  "location, v0, v1, v2, v3");
    {
	GLint	location = (int)SvIV(ST(0))
;
	GLint	v0 = (int)SvIV(ST(1))
;
	GLint	v1 = (int)SvIV(ST(2))
;
	GLint	v2 = (int)SvIV(ST(3))
;
	GLint	v3 = (int)SvIV(ST(4))
;
#line 2515 "lib/OpenGL/V2.xs"
		loadProc(glUniform4iARB,"glUniform4iARB");
#line 4897 "lib/OpenGL/V2.c"
#line 2517 "lib/OpenGL/V2.xs"
	{
		glUniform4iARB(location, v0, v1, v2, v3);
	}
#line 4902 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glUniform1fvARB_c); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glUniform1fvARB_c)
{
    dVAR; dXSARGS;
    if (items != 3)
       croak_xs_usage(cv,  "location, count, value");
    {
	GLint	location = (int)SvIV(ST(0))
;
	GLsizei	count = (int)SvIV(ST(1))
;
	void *	value = INT2PTR(void *,SvIV(ST(2)))
;
#line 2528 "lib/OpenGL/V2.xs"
		loadProc(glUniform1fvARB,"glUniform1fvARB");
#line 4923 "lib/OpenGL/V2.c"
#line 2530 "lib/OpenGL/V2.xs"
		glUniform1fvARB(location, count, value);
#line 4926 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glUniform1fvARB_s); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glUniform1fvARB_s)
{
    dVAR; dXSARGS;
    if (items != 3)
       croak_xs_usage(cv,  "location, count, value");
    {
	GLint	location = (int)SvIV(ST(0))
;
	GLsizei	count = (int)SvIV(ST(1))
;
	SV *	value = ST(2)
;
#line 2539 "lib/OpenGL/V2.xs"
		loadProc(glUniform1fvARB,"glUniform1fvARB");
#line 4947 "lib/OpenGL/V2.c"
#line 2541 "lib/OpenGL/V2.xs"
	{
		GLfloat * value_s = EL(value, sizeof(GLfloat));
		glUniform1fvARB(location, count, value_s);
	}
#line 4953 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glUniform1fvARB_p); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glUniform1fvARB_p)
{
    dVAR; dXSARGS;
    if (items < 1)
       croak_xs_usage(cv,  "location, ...");
    {
	GLint	location = (int)SvIV(ST(0))
;
#line 2551 "lib/OpenGL/V2.xs"
		loadProc(glUniform1fvARB,"glUniform1fvARB");
#line 4970 "lib/OpenGL/V2.c"
#line 2553 "lib/OpenGL/V2.xs"
	{
		int i;
		GLsizei count = items - 1;
		GLfloat *value = malloc(sizeof(GLfloat) * count);

		for(i=0;i<count;i++) {
			value[i] = (GLfloat)SvNV(ST(i+1));
		}

		glUniform1fvARB(location, count, value);

		free(value);
	}
#line 4985 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glUniform2fvARB_c); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glUniform2fvARB_c)
{
    dVAR; dXSARGS;
    if (items != 3)
       croak_xs_usage(cv,  "location, count, value");
    {
	GLint	location = (int)SvIV(ST(0))
;
	GLsizei	count = (int)SvIV(ST(1))
;
	void *	value = INT2PTR(void *,SvIV(ST(2)))
;
#line 2574 "lib/OpenGL/V2.xs"
		loadProc(glUniform2fvARB,"glUniform2fvARB");
#line 5006 "lib/OpenGL/V2.c"
#line 2576 "lib/OpenGL/V2.xs"
		glUniform2fvARB(location, count, value);
#line 5009 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glUniform2fvARB_s); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glUniform2fvARB_s)
{
    dVAR; dXSARGS;
    if (items != 3)
       croak_xs_usage(cv,  "location, count, value");
    {
	GLint	location = (int)SvIV(ST(0))
;
	GLsizei	count = (int)SvIV(ST(1))
;
	SV *	value = ST(2)
;
#line 2585 "lib/OpenGL/V2.xs"
		loadProc(glUniform2fvARB,"glUniform2fvARB");
#line 5030 "lib/OpenGL/V2.c"
#line 2587 "lib/OpenGL/V2.xs"
	{
		GLfloat * value_s = EL(value, sizeof(GLfloat));
		glUniform2fvARB(location, count, value_s);
	}
#line 5036 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glUniform2fvARB_p); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glUniform2fvARB_p)
{
    dVAR; dXSARGS;
    if (items < 1)
       croak_xs_usage(cv,  "location, ...");
    {
	GLint	location = (int)SvIV(ST(0))
;
#line 2597 "lib/OpenGL/V2.xs"
		loadProc(glUniform2fvARB,"glUniform2fvARB");
#line 5053 "lib/OpenGL/V2.c"
#line 2599 "lib/OpenGL/V2.xs"
	{
		int i;
		GLsizei elements = items - 1;
		GLsizei count = elements >> 1;
		GLfloat *value = malloc(sizeof(GLfloat) * elements);

		for(i=0;i<elements;i++) {
			value[i] = (GLfloat)SvNV(ST(i+1));
		}

		glUniform2fvARB(location, count, value);

		free(value);
	}
#line 5069 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glUniform3fvARB_c); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glUniform3fvARB_c)
{
    dVAR; dXSARGS;
    if (items != 3)
       croak_xs_usage(cv,  "location, count, value");
    {
	GLint	location = (int)SvIV(ST(0))
;
	GLsizei	count = (int)SvIV(ST(1))
;
	void *	value = INT2PTR(void *,SvIV(ST(2)))
;
#line 2621 "lib/OpenGL/V2.xs"
		loadProc(glUniform3fvARB,"glUniform3fvARB");
#line 5090 "lib/OpenGL/V2.c"
#line 2623 "lib/OpenGL/V2.xs"
		glUniform3fvARB(location, count, value);
#line 5093 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glUniform3fvARB_s); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glUniform3fvARB_s)
{
    dVAR; dXSARGS;
    if (items != 3)
       croak_xs_usage(cv,  "location, count, value");
    {
	GLint	location = (int)SvIV(ST(0))
;
	GLsizei	count = (int)SvIV(ST(1))
;
	SV *	value = ST(2)
;
#line 2632 "lib/OpenGL/V2.xs"
		loadProc(glUniform3fvARB,"glUniform3fvARB");
#line 5114 "lib/OpenGL/V2.c"
#line 2634 "lib/OpenGL/V2.xs"
	{
		GLfloat * value_s = EL(value, sizeof(GLfloat));
		glUniform3fvARB(location, count, value_s);
	}
#line 5120 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glUniform3fvARB_p); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glUniform3fvARB_p)
{
    dVAR; dXSARGS;
    if (items < 1)
       croak_xs_usage(cv,  "location, ...");
    {
	GLint	location = (int)SvIV(ST(0))
;
#line 2644 "lib/OpenGL/V2.xs"
		loadProc(glUniform3fvARB,"glUniform3fvARB");
#line 5137 "lib/OpenGL/V2.c"
#line 2646 "lib/OpenGL/V2.xs"
	{
		int i;
		GLsizei elements = items - 1;
		GLsizei count = elements / 3;
		GLfloat *value = malloc(sizeof(GLfloat) * elements);

		for(i=0;i<elements;i++) {
			value[i] = (GLfloat)SvNV(ST(i+1));
		}

		glUniform3fvARB(location, count, value);

		free(value);
	}
#line 5153 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glUniform4fvARB_c); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glUniform4fvARB_c)
{
    dVAR; dXSARGS;
    if (items != 3)
       croak_xs_usage(cv,  "location, count, value");
    {
	GLint	location = (int)SvIV(ST(0))
;
	GLsizei	count = (int)SvIV(ST(1))
;
	void *	value = INT2PTR(void *,SvIV(ST(2)))
;
#line 2668 "lib/OpenGL/V2.xs"
		loadProc(glUniform4fvARB,"glUniform4fvARB");
#line 5174 "lib/OpenGL/V2.c"
#line 2670 "lib/OpenGL/V2.xs"
		glUniform4fvARB(location, count, value);
#line 5177 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glUniform4fvARB_s); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glUniform4fvARB_s)
{
    dVAR; dXSARGS;
    if (items != 3)
       croak_xs_usage(cv,  "location, count, value");
    {
	GLint	location = (int)SvIV(ST(0))
;
	GLsizei	count = (int)SvIV(ST(1))
;
	SV *	value = ST(2)
;
#line 2679 "lib/OpenGL/V2.xs"
		loadProc(glUniform4fvARB,"glUniform4fvARB");
#line 5198 "lib/OpenGL/V2.c"
#line 2681 "lib/OpenGL/V2.xs"
	{
		GLfloat * value_s = EL(value, sizeof(GLfloat));
		glUniform4fvARB(location, count, value_s);
	}
#line 5204 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glUniform4fvARB_p); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glUniform4fvARB_p)
{
    dVAR; dXSARGS;
    if (items < 1)
       croak_xs_usage(cv,  "location, ...");
    {
	GLint	location = (int)SvIV(ST(0))
;
#line 2691 "lib/OpenGL/V2.xs"
		loadProc(glUniform4fvARB,"glUniform4fvARB");
#line 5221 "lib/OpenGL/V2.c"
#line 2693 "lib/OpenGL/V2.xs"
	{
		int i;
		GLsizei elements = items - 1;
		GLsizei count = elements >> 2;
		GLfloat *value = malloc(sizeof(GLfloat) * elements);

		for(i=0;i<elements;i++) {
			value[i] = (GLfloat)SvNV(ST(i+1));
		}

		glUniform4fvARB(location, count, value);

		free(value);
	}
#line 5237 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glUniform1ivARB_c); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glUniform1ivARB_c)
{
    dVAR; dXSARGS;
    if (items != 3)
       croak_xs_usage(cv,  "location, count, value");
    {
	GLint	location = (int)SvIV(ST(0))
;
	GLsizei	count = (int)SvIV(ST(1))
;
	void *	value = INT2PTR(void *,SvIV(ST(2)))
;
#line 2715 "lib/OpenGL/V2.xs"
		loadProc(glUniform1ivARB,"glUniform1ivARB");
#line 5258 "lib/OpenGL/V2.c"
#line 2717 "lib/OpenGL/V2.xs"
		glUniform1ivARB(location, count, value);
#line 5261 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glUniform1ivARB_s); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glUniform1ivARB_s)
{
    dVAR; dXSARGS;
    if (items != 3)
       croak_xs_usage(cv,  "location, count, value");
    {
	GLint	location = (int)SvIV(ST(0))
;
	GLsizei	count = (int)SvIV(ST(1))
;
	SV *	value = ST(2)
;
#line 2726 "lib/OpenGL/V2.xs"
		loadProc(glUniform1ivARB,"glUniform1ivARB");
#line 5282 "lib/OpenGL/V2.c"
#line 2728 "lib/OpenGL/V2.xs"
	{
		GLint * value_s = EL(value, sizeof(GLint));
		glUniform1ivARB(location, count, value_s);
	}
#line 5288 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glUniform1ivARB_p); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glUniform1ivARB_p)
{
    dVAR; dXSARGS;
    if (items < 1)
       croak_xs_usage(cv,  "location, ...");
    {
	GLint	location = (int)SvIV(ST(0))
;
#line 2738 "lib/OpenGL/V2.xs"
		loadProc(glUniform1ivARB,"glUniform1ivARB");
#line 5305 "lib/OpenGL/V2.c"
#line 2740 "lib/OpenGL/V2.xs"
	{
		int i;
		GLsizei count = items - 1;
		GLint *value = malloc(sizeof(GLint) * count);

		for(i=0;i<count;i++) {
			value[i] = SvIV(ST(i+1));
		}

		glUniform1ivARB(location, count, value);

		free(value);
	}
#line 5320 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glUniform2ivARB_c); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glUniform2ivARB_c)
{
    dVAR; dXSARGS;
    if (items != 3)
       croak_xs_usage(cv,  "location, count, value");
    {
	GLint	location = (int)SvIV(ST(0))
;
	GLsizei	count = (int)SvIV(ST(1))
;
	void *	value = INT2PTR(void *,SvIV(ST(2)))
;
#line 2761 "lib/OpenGL/V2.xs"
		loadProc(glUniform2ivARB,"glUniform2ivARB");
#line 5341 "lib/OpenGL/V2.c"
#line 2763 "lib/OpenGL/V2.xs"
		glUniform2ivARB(location, count, value);
#line 5344 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glUniform2ivARB_s); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glUniform2ivARB_s)
{
    dVAR; dXSARGS;
    if (items != 3)
       croak_xs_usage(cv,  "location, count, value");
    {
	GLint	location = (int)SvIV(ST(0))
;
	GLsizei	count = (int)SvIV(ST(1))
;
	SV *	value = ST(2)
;
#line 2772 "lib/OpenGL/V2.xs"
		loadProc(glUniform2ivARB,"glUniform2ivARB");
#line 5365 "lib/OpenGL/V2.c"
#line 2774 "lib/OpenGL/V2.xs"
	{
		GLint * value_s = EL(value, sizeof(GLint));
		glUniform2ivARB(location, count, value_s);
	}
#line 5371 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glUniform2ivARB_p); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glUniform2ivARB_p)
{
    dVAR; dXSARGS;
    if (items < 1)
       croak_xs_usage(cv,  "location, ...");
    {
	GLint	location = (int)SvIV(ST(0))
;
#line 2784 "lib/OpenGL/V2.xs"
		loadProc(glUniform2ivARB,"glUniform2ivARB");
#line 5388 "lib/OpenGL/V2.c"
#line 2786 "lib/OpenGL/V2.xs"
	{
		int i;
		GLsizei elements = items - 1;
		GLsizei count = elements >> 1;
		GLint *value = malloc(sizeof(GLint) * elements);

		for(i=0;i<elements;i++) {
			value[i] = SvIV(ST(i+1));
		}

		glUniform2ivARB(location, count, value);

		free(value);
	}
#line 5404 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glUniform3ivARB_c); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glUniform3ivARB_c)
{
    dVAR; dXSARGS;
    if (items != 3)
       croak_xs_usage(cv,  "location, count, value");
    {
	GLint	location = (int)SvIV(ST(0))
;
	GLsizei	count = (int)SvIV(ST(1))
;
	void *	value = INT2PTR(void *,SvIV(ST(2)))
;
#line 2808 "lib/OpenGL/V2.xs"
		loadProc(glUniform3ivARB,"glUniform3ivARB");
#line 5425 "lib/OpenGL/V2.c"
#line 2810 "lib/OpenGL/V2.xs"
		glUniform3ivARB(location, count, value);
#line 5428 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glUniform3ivARB_s); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glUniform3ivARB_s)
{
    dVAR; dXSARGS;
    if (items != 3)
       croak_xs_usage(cv,  "location, count, value");
    {
	GLint	location = (int)SvIV(ST(0))
;
	GLsizei	count = (int)SvIV(ST(1))
;
	SV *	value = ST(2)
;
#line 2819 "lib/OpenGL/V2.xs"
		loadProc(glUniform3ivARB,"glUniform3ivARB");
#line 5449 "lib/OpenGL/V2.c"
#line 2821 "lib/OpenGL/V2.xs"
	{
		GLint * value_s = EL(value, sizeof(GLint));
		glUniform3ivARB(location, count, value_s);
	}
#line 5455 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glUniform3ivARB_p); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glUniform3ivARB_p)
{
    dVAR; dXSARGS;
    if (items < 1)
       croak_xs_usage(cv,  "location, ...");
    {
	GLint	location = (int)SvIV(ST(0))
;
#line 2831 "lib/OpenGL/V2.xs"
		loadProc(glUniform3ivARB,"glUniform3ivARB");
#line 5472 "lib/OpenGL/V2.c"
#line 2833 "lib/OpenGL/V2.xs"
	{
		int i;
		GLsizei elements = items - 1;
		GLsizei count = elements / 3;
		GLint *value = malloc(sizeof(GLint) * elements);

		for(i=0;i<elements;i++) {
			value[i] = SvIV(ST(i+1));
		}

		glUniform3ivARB(location, count, value);

		free(value);
	}
#line 5488 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glUniform4ivARB_c); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glUniform4ivARB_c)
{
    dVAR; dXSARGS;
    if (items != 3)
       croak_xs_usage(cv,  "location, count, value");
    {
	GLint	location = (int)SvIV(ST(0))
;
	GLsizei	count = (int)SvIV(ST(1))
;
	void *	value = INT2PTR(void *,SvIV(ST(2)))
;
#line 2855 "lib/OpenGL/V2.xs"
		loadProc(glUniform4ivARB,"glUniform4ivARB");
#line 5509 "lib/OpenGL/V2.c"
#line 2857 "lib/OpenGL/V2.xs"
		glUniform4ivARB(location, count, value);
#line 5512 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glUniform4ivARB_s); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glUniform4ivARB_s)
{
    dVAR; dXSARGS;
    if (items != 3)
       croak_xs_usage(cv,  "location, count, value");
    {
	GLint	location = (int)SvIV(ST(0))
;
	GLsizei	count = (int)SvIV(ST(1))
;
	SV *	value = ST(2)
;
#line 2866 "lib/OpenGL/V2.xs"
		loadProc(glUniform4ivARB,"glUniformifvARB");
#line 5533 "lib/OpenGL/V2.c"
#line 2868 "lib/OpenGL/V2.xs"
	{
		GLint * value_s = EL(value, sizeof(GLint));
		glUniform4ivARB(location, count, value_s);
	}
#line 5539 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glUniform4ivARB_p); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glUniform4ivARB_p)
{
    dVAR; dXSARGS;
    if (items < 1)
       croak_xs_usage(cv,  "location, ...");
    {
	GLint	location = (int)SvIV(ST(0))
;
#line 2878 "lib/OpenGL/V2.xs"
		loadProc(glUniform4ivARB,"glUniform4ivARB");
#line 5556 "lib/OpenGL/V2.c"
#line 2880 "lib/OpenGL/V2.xs"
	{
		int i;
		GLsizei elements = items - 1;
		GLsizei count = elements >> 2;
		GLint *value = malloc(sizeof(GLint) * elements);

		for(i=0;i<elements;i++) {
			value[i] = SvIV(ST(i+1));
		}

		glUniform4ivARB(location, count, value);

		free(value);
	}
#line 5572 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glUniformMatrix2fvARB_c); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glUniformMatrix2fvARB_c)
{
    dVAR; dXSARGS;
    if (items != 4)
       croak_xs_usage(cv,  "location, count, transpose, value");
    {
	GLint	location = (int)SvIV(ST(0))
;
	GLsizei	count = (int)SvIV(ST(1))
;
	GLboolean	transpose = (bool)SvTRUE(ST(2))
;
	void *	value = INT2PTR(void *,SvIV(ST(3)))
;
#line 2903 "lib/OpenGL/V2.xs"
		loadProc(glUniformMatrix2fvARB,"glUniformMatrix2fvARB");
#line 5595 "lib/OpenGL/V2.c"
#line 2905 "lib/OpenGL/V2.xs"
		glUniformMatrix2fvARB(location, count, transpose, value);
#line 5598 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glUniformMatrix2fvARB_s); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glUniformMatrix2fvARB_s)
{
    dVAR; dXSARGS;
    if (items != 4)
       croak_xs_usage(cv,  "location, count, transpose, value");
    {
	GLint	location = (int)SvIV(ST(0))
;
	GLsizei	count = (int)SvIV(ST(1))
;
	GLboolean	transpose = (bool)SvTRUE(ST(2))
;
	SV *	value = ST(3)
;
#line 2915 "lib/OpenGL/V2.xs"
		loadProc(glUniformMatrix2fvARB,"glUniformMatrix2fvARB");
#line 5621 "lib/OpenGL/V2.c"
#line 2917 "lib/OpenGL/V2.xs"
	{
		GLfloat * value_s = EL(value, sizeof(GLfloat));
		glUniformMatrix2fvARB(location, count, transpose, value_s);
	}
#line 5627 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glUniformMatrix2fvARB_p); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glUniformMatrix2fvARB_p)
{
    dVAR; dXSARGS;
    if (items < 2)
       croak_xs_usage(cv,  "location, transpose, ...");
    {
	GLint	location = (int)SvIV(ST(0))
;
	GLboolean	transpose = (bool)SvTRUE(ST(1))
;
#line 2928 "lib/OpenGL/V2.xs"
		loadProc(glUniformMatrix2fvARB,"glUniformMatrix2fvARB");
#line 5646 "lib/OpenGL/V2.c"
#line 2930 "lib/OpenGL/V2.xs"
	{
		int i;
		GLsizei elements = items - 2;
		GLsizei count = elements / 4;
		GLfloat *value = malloc(sizeof(GLfloat) * elements);

		for(i=0;i<elements;i++) {
			value[i] = (GLfloat)SvNV(ST(i+2));
		}

		glUniformMatrix2fvARB(location, count, transpose, value);

		free(value);
	}
#line 5662 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glUniformMatrix3fvARB_c); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glUniformMatrix3fvARB_c)
{
    dVAR; dXSARGS;
    if (items != 4)
       croak_xs_usage(cv,  "location, count, transpose, value");
    {
	GLint	location = (int)SvIV(ST(0))
;
	GLsizei	count = (int)SvIV(ST(1))
;
	GLboolean	transpose = (bool)SvTRUE(ST(2))
;
	void *	value = INT2PTR(void *,SvIV(ST(3)))
;
#line 2953 "lib/OpenGL/V2.xs"
		loadProc(glUniformMatrix3fvARB,"glUniformMatrix2fvARB");
#line 5685 "lib/OpenGL/V2.c"
#line 2955 "lib/OpenGL/V2.xs"
		glUniformMatrix3fvARB(location, count, transpose, value);
#line 5688 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glUniformMatrix3fvARB_s); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glUniformMatrix3fvARB_s)
{
    dVAR; dXSARGS;
    if (items != 4)
       croak_xs_usage(cv,  "location, count, transpose, value");
    {
	GLint	location = (int)SvIV(ST(0))
;
	GLsizei	count = (int)SvIV(ST(1))
;
	GLboolean	transpose = (bool)SvTRUE(ST(2))
;
	SV *	value = ST(3)
;
#line 2965 "lib/OpenGL/V2.xs"
		loadProc(glUniformMatrix3fvARB,"glUniformMatrix3fvARB");
#line 5711 "lib/OpenGL/V2.c"
#line 2967 "lib/OpenGL/V2.xs"
	{
		GLfloat * value_s = EL(value, sizeof(GLfloat));
		glUniformMatrix3fvARB(location, count, transpose, value_s);
	}
#line 5717 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glUniformMatrix3fvARB_p); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glUniformMatrix3fvARB_p)
{
    dVAR; dXSARGS;
    if (items < 2)
       croak_xs_usage(cv,  "location, transpose, ...");
    {
	GLint	location = (int)SvIV(ST(0))
;
	GLboolean	transpose = (bool)SvTRUE(ST(1))
;
#line 2978 "lib/OpenGL/V2.xs"
		loadProc(glUniformMatrix3fvARB,"glUniformMatrix3fvARB");
#line 5736 "lib/OpenGL/V2.c"
#line 2980 "lib/OpenGL/V2.xs"
	{
		int i;
		GLsizei elements = items - 2;
		GLsizei count = elements / 9;
		GLfloat *value = malloc(sizeof(GLfloat) * elements);

		for(i=0;i<elements;i++) {
			value[i] = (GLfloat)SvNV(ST(i+2));
		}

		glUniformMatrix3fvARB(location, count, transpose, value);

		free(value);
	}
#line 5752 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glUniformMatrix4fvARB_c); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glUniformMatrix4fvARB_c)
{
    dVAR; dXSARGS;
    if (items != 4)
       croak_xs_usage(cv,  "location, count, transpose, value");
    {
	GLint	location = (int)SvIV(ST(0))
;
	GLsizei	count = (int)SvIV(ST(1))
;
	GLboolean	transpose = (bool)SvTRUE(ST(2))
;
	void *	value = INT2PTR(void *,SvIV(ST(3)))
;
#line 3003 "lib/OpenGL/V2.xs"
		loadProc(glUniformMatrix4fvARB,"glUniformMatrix4fvARB");
#line 5775 "lib/OpenGL/V2.c"
#line 3005 "lib/OpenGL/V2.xs"
		glUniformMatrix4fvARB(location, count, transpose, value);
#line 5778 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glUniformMatrix4fvARB_s); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glUniformMatrix4fvARB_s)
{
    dVAR; dXSARGS;
    if (items != 4)
       croak_xs_usage(cv,  "location, count, transpose, value");
    {
	GLint	location = (int)SvIV(ST(0))
;
	GLsizei	count = (int)SvIV(ST(1))
;
	GLboolean	transpose = (bool)SvTRUE(ST(2))
;
	SV *	value = ST(3)
;
#line 3015 "lib/OpenGL/V2.xs"
		loadProc(glUniformMatrix4fvARB,"glUniformMatrix4fvARB");
#line 5801 "lib/OpenGL/V2.c"
#line 3017 "lib/OpenGL/V2.xs"
	{
		GLfloat * value_s = EL(value, sizeof(GLfloat));
		glUniformMatrix4fvARB(location, count, transpose, value_s);
	}
#line 5807 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glUniformMatrix4fvARB_p); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glUniformMatrix4fvARB_p)
{
    dVAR; dXSARGS;
    if (items < 2)
       croak_xs_usage(cv,  "location, transpose, ...");
    {
	GLint	location = (int)SvIV(ST(0))
;
	GLboolean	transpose = (bool)SvTRUE(ST(1))
;
#line 3028 "lib/OpenGL/V2.xs"
		loadProc(glUniformMatrix4fvARB,"glUniformMatrix4fvARB");
#line 5826 "lib/OpenGL/V2.c"
#line 3030 "lib/OpenGL/V2.xs"
	{
		int i;
		GLsizei elements = items - 2;
		GLsizei count = elements / 16;
		GLfloat *value = malloc(sizeof(GLfloat) * elements);

		for(i=0;i<elements;i++) {
			value[i] = (GLfloat)SvNV(ST(i+2));
		}

		glUniformMatrix4fvARB(location, count, transpose, value);

		free(value);
	}
#line 5842 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glGetObjectParameterfvARB_c); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glGetObjectParameterfvARB_c)
{
    dVAR; dXSARGS;
    if (items != 3)
       croak_xs_usage(cv,  "obj, pname, params");
    {
	GLhandleARB	obj = (GLhandleARB)SvUV(ST(0))
;
	GLenum	pname = (int)SvIV(ST(1))
;
	void *	params = INT2PTR(void *,SvIV(ST(2)))
;
#line 3052 "lib/OpenGL/V2.xs"
		loadProc(glGetObjectParameterfvARB,"glGetObjectParameterfvARB");
#line 5863 "lib/OpenGL/V2.c"
#line 3054 "lib/OpenGL/V2.xs"
		glGetObjectParameterfvARB(obj,pname,params);
#line 5866 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glGetObjectParameterfvARB_s); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glGetObjectParameterfvARB_s)
{
    dVAR; dXSARGS;
    if (items != 3)
       croak_xs_usage(cv,  "obj, pname, params");
    {
	GLhandleARB	obj = (GLhandleARB)SvUV(ST(0))
;
	GLenum	pname = (int)SvIV(ST(1))
;
	SV *	params = ST(2)
;
#line 3063 "lib/OpenGL/V2.xs"
		loadProc(glGetObjectParameterfvARB,"glGetObjectParameterfvARB");
#line 5887 "lib/OpenGL/V2.c"
#line 3065 "lib/OpenGL/V2.xs"
	{
		GLfloat * params_s = EL(params, sizeof(GLfloat));
		glGetObjectParameterfvARB(obj,pname,params_s);
	}
#line 5893 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glGetObjectParameterfvARB_p); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glGetObjectParameterfvARB_p)
{
    dVAR; dXSARGS;
    if (items != 2)
       croak_xs_usage(cv,  "obj, pname");
    {
	GLhandleARB	obj = (GLhandleARB)SvUV(ST(0))
;
	GLenum	pname = (int)SvIV(ST(1))
;
	GLfloat	RETVAL;
	dXSTARG;
#line 3076 "lib/OpenGL/V2.xs"
		loadProc(glGetObjectParameterfvARB,"glGetObjectParameterfvARB");
#line 5914 "lib/OpenGL/V2.c"
#line 3078 "lib/OpenGL/V2.xs"
	{
		GLfloat	ret;
		glGetObjectParameterfvARB(obj,pname,&ret);
		RETVAL = ret;
	}
#line 5921 "lib/OpenGL/V2.c"
	XSprePUSH;
	PUSHn((double)RETVAL);
    }
    XSRETURN(1);
}


XS_EUPXS(XS_OpenGL_glGetObjectParameterivARB_c); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glGetObjectParameterivARB_c)
{
    dVAR; dXSARGS;
    if (items != 3)
       croak_xs_usage(cv,  "obj, pname, params");
    {
	GLhandleARB	obj = (GLhandleARB)SvUV(ST(0))
;
	GLenum	pname = (int)SvIV(ST(1))
;
	void *	params = INT2PTR(void *,SvIV(ST(2)))
;
#line 3093 "lib/OpenGL/V2.xs"
		loadProc(glGetObjectParameterivARB,"glGetObjectParameterivARB");
#line 5944 "lib/OpenGL/V2.c"
#line 3095 "lib/OpenGL/V2.xs"
		glGetObjectParameterivARB(obj,pname,params);
#line 5947 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glGetObjectParameterivARB_s); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glGetObjectParameterivARB_s)
{
    dVAR; dXSARGS;
    if (items != 3)
       croak_xs_usage(cv,  "obj, pname, params");
    {
	GLhandleARB	obj = (GLhandleARB)SvUV(ST(0))
;
	GLenum	pname = (int)SvIV(ST(1))
;
	SV *	params = ST(2)
;
#line 3104 "lib/OpenGL/V2.xs"
		loadProc(glGetObjectParameterivARB,"glGetObjectParameterivARB");
#line 5968 "lib/OpenGL/V2.c"
#line 3106 "lib/OpenGL/V2.xs"
	{
		GLint * params_s = EL(params, sizeof(GLint));
		glGetObjectParameterivARB(obj,pname,params_s);
	}
#line 5974 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glGetObjectParameterivARB_p); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glGetObjectParameterivARB_p)
{
    dVAR; dXSARGS;
    if (items != 2)
       croak_xs_usage(cv,  "obj, pname");
    {
	GLhandleARB	obj = (GLhandleARB)SvUV(ST(0))
;
	GLenum	pname = (int)SvIV(ST(1))
;
	GLint	RETVAL;
	dXSTARG;
#line 3117 "lib/OpenGL/V2.xs"
		loadProc(glGetObjectParameterivARB,"glGetObjectParameterivARB");
#line 5995 "lib/OpenGL/V2.c"
#line 3119 "lib/OpenGL/V2.xs"
	{
		GLint	ret;
		glGetObjectParameterivARB(obj,pname,&ret);
		RETVAL = ret;
	}
#line 6002 "lib/OpenGL/V2.c"
	XSprePUSH;
	PUSHi((IV)RETVAL);
    }
    XSRETURN(1);
}


XS_EUPXS(XS_OpenGL_glGetInfoLogARB_c); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glGetInfoLogARB_c)
{
    dVAR; dXSARGS;
    if (items != 4)
       croak_xs_usage(cv,  "obj, maxLength, length, infoLog");
    {
	GLhandleARB	obj = (GLhandleARB)SvUV(ST(0))
;
	GLsizei	maxLength = (int)SvIV(ST(1))
;
	void *	length = INT2PTR(void *,SvIV(ST(2)))
;
	void *	infoLog = INT2PTR(void *,SvIV(ST(3)))
;
#line 3135 "lib/OpenGL/V2.xs"
		loadProc(glGetInfoLogARB,"glGetInfoLogARB");
#line 6027 "lib/OpenGL/V2.c"
#line 3137 "lib/OpenGL/V2.xs"
		glGetInfoLogARB(obj, maxLength, length, infoLog);
#line 6030 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glGetInfoLogARB_p); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glGetInfoLogARB_p)
{
    dVAR; dXSARGS;
    if (items != 1)
       croak_xs_usage(cv,  "obj");
    {
	GLhandleARB	obj = (GLhandleARB)SvUV(ST(0))
;
	SV *	RETVAL;
#line 3144 "lib/OpenGL/V2.xs"
		loadProc(glGetObjectParameterivARB,"glGetObjectParameterivARB");
		loadProc(glGetInfoLogARB,"glGetInfoLogARB");
#line 6049 "lib/OpenGL/V2.c"
#line 3147 "lib/OpenGL/V2.xs"
	{
		GLint maxLength;
		glGetObjectParameterivARB(obj,GL_OBJECT_INFO_LOG_LENGTH_ARB,(GLvoid *)&maxLength);
		if (maxLength)
		{
			GLint length;
			GLcharARB * infoLog = malloc(maxLength+1);
			glGetInfoLogARB(obj,maxLength,&length,infoLog);
			infoLog[length] = 0;
			if (*infoLog)
				RETVAL = newSVpv(infoLog, 0);
			else
				RETVAL = newSVsv(&PL_sv_undef);

			free(infoLog);
		}
		else
		{
			RETVAL = newSVsv(&PL_sv_undef);
		}
	}
#line 6072 "lib/OpenGL/V2.c"
	RETVAL = sv_2mortal(RETVAL);
	ST(0) = RETVAL;
    }
    XSRETURN(1);
}


XS_EUPXS(XS_OpenGL_glGetAttachedObjectsARB_c); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glGetAttachedObjectsARB_c)
{
    dVAR; dXSARGS;
    if (items != 4)
       croak_xs_usage(cv,  "containerObj, maxCount, count, obj");
    {
	GLhandleARB	containerObj = (GLhandleARB)SvUV(ST(0))
;
	GLsizei	maxCount = (int)SvIV(ST(1))
;
	void *	count = INT2PTR(void *,SvIV(ST(2)))
;
	void *	obj = INT2PTR(void *,SvIV(ST(3)))
;
#line 3179 "lib/OpenGL/V2.xs"
		loadProc(glGetAttachedObjectsARB,"glGetAttachedObjectsARB");
#line 6097 "lib/OpenGL/V2.c"
#line 3181 "lib/OpenGL/V2.xs"
		glGetAttachedObjectsARB(containerObj, maxCount, count, obj);
#line 6100 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glGetAttachedObjectsARB_s); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glGetAttachedObjectsARB_s)
{
    dVAR; dXSARGS;
    if (items != 4)
       croak_xs_usage(cv,  "containerObj, maxCount, count, obj");
    {
	GLhandleARB	containerObj = (GLhandleARB)SvUV(ST(0))
;
	GLsizei	maxCount = (int)SvIV(ST(1))
;
	void *	count = INT2PTR(void *,SvIV(ST(2)))
;
	SV *	obj = ST(3)
;
#line 3191 "lib/OpenGL/V2.xs"
		loadProc(glGetObjectParameterivARB,"glGetObjectParameterivARB");
		loadProc(glGetAttachedObjectsARB,"glGetAttachedObjectsARB");
#line 6124 "lib/OpenGL/V2.c"
#line 3194 "lib/OpenGL/V2.xs"
	{
		GLint len;
		glGetObjectParameterivARB(containerObj,GL_OBJECT_ATTACHED_OBJECTS_ARB,
			(GLvoid *)&len);
		if (len)
		{
			GLsizei * count_s = EL(count, sizeof(GLsizei));
			GLhandleARB * obj_s = EL(obj, sizeof(GLhandleARB)*len);
			glGetAttachedObjectsARB(containerObj, maxCount, count_s, obj_s);
		}
	}
#line 6137 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glGetAttachedObjectsARB_p); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glGetAttachedObjectsARB_p)
{
    dVAR; dXSARGS;
    if (items != 1)
       croak_xs_usage(cv,  "containerObj");
    PERL_UNUSED_VAR(ax); /* -Wall */
    SP -= items;
    {
	GLhandleARB	containerObj = (GLhandleARB)SvUV(ST(0))
;
#line 3211 "lib/OpenGL/V2.xs"
		loadProc(glGetObjectParameterivARB,"glGetObjectParameterivARB");
		loadProc(glGetAttachedObjectsARB,"glGetAttachedObjectsARB");
#line 6157 "lib/OpenGL/V2.c"
#line 3214 "lib/OpenGL/V2.xs"
	{
		GLsizei maxCount;
		GLsizei count;
		GLhandleARB *obj;
		int i;

		glGetObjectParameterivARB(containerObj,GL_OBJECT_ATTACHED_OBJECTS_ARB,
			(GLvoid *)&maxCount);
		obj = malloc(sizeof(GLhandleARB)*maxCount);

		glGetAttachedObjectsARB(containerObj, maxCount, &count, obj);

		EXTEND(sp, count);
		for(i=0;i<count;i++)
			PUSHs(sv_2mortal(newSViv((IV)obj[i])));

		free(obj);
	}
#line 6177 "lib/OpenGL/V2.c"
	PUTBACK;
	return;
    }
}


XS_EUPXS(XS_OpenGL_glGetUniformLocationARB_c); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glGetUniformLocationARB_c)
{
    dVAR; dXSARGS;
    if (items != 2)
       croak_xs_usage(cv,  "programObj, name");
    {
	GLhandleARB	programObj = (GLhandleARB)SvUV(ST(0))
;
	void *	name = INT2PTR(void *,SvIV(ST(1)))
;
	GLint	RETVAL;
	dXSTARG;
#line 3239 "lib/OpenGL/V2.xs"
		loadProc(glGetUniformLocationARB,"glGetUniformLocationARB");
#line 6199 "lib/OpenGL/V2.c"
#line 3241 "lib/OpenGL/V2.xs"
		RETVAL = glGetUniformLocationARB(programObj, name);
#line 6202 "lib/OpenGL/V2.c"
	XSprePUSH;
	PUSHi((IV)RETVAL);
    }
    XSRETURN(1);
}


XS_EUPXS(XS_OpenGL_glGetUniformLocationARB_p); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glGetUniformLocationARB_p)
{
    dVAR; dXSARGS;
    if (items < 1)
       croak_xs_usage(cv,  "programObj, ...");
    {
	GLhandleARB	programObj = (GLhandleARB)SvUV(ST(0))
;
	GLint	RETVAL;
	dXSTARG;
#line 3250 "lib/OpenGL/V2.xs"
		loadProc(glGetUniformLocationARB,"glGetUniformLocationARB");
#line 6223 "lib/OpenGL/V2.c"
#line 3252 "lib/OpenGL/V2.xs"
	{
		GLcharARB *name = (GLcharARB *)SvPV(ST(1),PL_na);
		RETVAL = glGetUniformLocationARB(programObj, name);
	}
#line 6229 "lib/OpenGL/V2.c"
	XSprePUSH;
	PUSHi((IV)RETVAL);
    }
    XSRETURN(1);
}


XS_EUPXS(XS_OpenGL_glGetActiveUniformARB_c); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glGetActiveUniformARB_c)
{
    dVAR; dXSARGS;
    if (items != 7)
       croak_xs_usage(cv,  "programObj, index, maxLength, length, size, type, name");
    {
	GLhandleARB	programObj = (GLhandleARB)SvUV(ST(0))
;
	GLuint	index = (unsigned int)SvUV(ST(1))
;
	GLsizei	maxLength = (int)SvIV(ST(2))
;
	void *	length = INT2PTR(void *,SvIV(ST(3)))
;
	void *	size = INT2PTR(void *,SvIV(ST(4)))
;
	void *	type = INT2PTR(void *,SvIV(ST(5)))
;
	void *	name = INT2PTR(void *,SvIV(ST(6)))
;
#line 3270 "lib/OpenGL/V2.xs"
		loadProc(glGetActiveUniformARB,"glGetActiveUniformARB");
#line 6260 "lib/OpenGL/V2.c"
#line 3272 "lib/OpenGL/V2.xs"
		glGetActiveUniformARB(programObj,index,maxLength,length,size,type,name);
#line 6263 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glGetActiveUniformARB_s); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glGetActiveUniformARB_s)
{
    dVAR; dXSARGS;
    if (items != 7)
       croak_xs_usage(cv,  "programObj, index, maxLength, length, size, type, name");
    {
	GLhandleARB	programObj = (GLhandleARB)SvUV(ST(0))
;
	GLuint	index = (unsigned int)SvUV(ST(1))
;
	GLsizei	maxLength = (int)SvIV(ST(2))
;
	SV *	length = ST(3)
;
	SV *	size = ST(4)
;
	SV *	type = ST(5)
;
	SV *	name = ST(6)
;
#line 3285 "lib/OpenGL/V2.xs"
		loadProc(glGetActiveUniformARB,"glGetActiveUniformARB");
#line 6292 "lib/OpenGL/V2.c"
#line 3287 "lib/OpenGL/V2.xs"
	{
		GLsizei	  *length_s = EL(length, sizeof(GLsizei));
		GLint	  *size_s = EL(size, sizeof(GLint));
		GLenum	  *type_s = EL(type, sizeof(GLenum));
		GLcharARB *name_s = EL(name, sizeof(GLcharARB));
		glGetActiveUniformARB(programObj,index,maxLength,length_s,size_s,type_s,name_s);
	}
#line 6301 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glGetActiveUniformARB_p); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glGetActiveUniformARB_p)
{
    dVAR; dXSARGS;
    if (items != 2)
       croak_xs_usage(cv,  "programObj, index");
    PERL_UNUSED_VAR(ax); /* -Wall */
    SP -= items;
    {
	GLhandleARB	programObj = (GLhandleARB)SvUV(ST(0))
;
	GLuint	index = (unsigned int)SvUV(ST(1))
;
#line 3301 "lib/OpenGL/V2.xs"
		loadProc(glGetObjectParameterivARB,"glGetObjectParameterivARB");
		loadProc(glGetActiveUniformARB,"glGetActiveUniformARB");
#line 6323 "lib/OpenGL/V2.c"
#line 3304 "lib/OpenGL/V2.xs"
	{
		GLsizei maxLength;
		glGetObjectParameterivARB(programObj,GL_OBJECT_ACTIVE_UNIFORM_MAX_LENGTH_ARB,
			(GLvoid *)&maxLength);
		if (maxLength)
		{
			GLsizei length;
			GLint size;
			GLenum type;
			GLcharARB *name;

			name = malloc(maxLength+1);
			glGetActiveUniformARB(programObj,index,maxLength,
				&length,&size,&type,name);
			name[length] = 0;

			if (*name)
			{
				EXTEND(sp,3);
				PUSHs(sv_2mortal(newSVpv(name,0)));
				PUSHs(sv_2mortal(newSViv(type)));
				PUSHs(sv_2mortal(newSViv(size)));
			}
			else
			{
				EXTEND(sp,1);
				PUSHs(sv_2mortal(newSVsv(&PL_sv_undef)));
			}

			free(name);
		}
		else
		{
			EXTEND(sp,1);
			PUSHs(sv_2mortal(newSVsv(&PL_sv_undef)));
		}
	}
#line 6362 "lib/OpenGL/V2.c"
	PUTBACK;
	return;
    }
}


XS_EUPXS(XS_OpenGL_glGetUniformfvARB_c); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glGetUniformfvARB_c)
{
    dVAR; dXSARGS;
    if (items != 3)
       croak_xs_usage(cv,  "programObj, location, params");
    {
	GLhandleARB	programObj = (GLhandleARB)SvUV(ST(0))
;
	GLint	location = (int)SvIV(ST(1))
;
	void *	params = INT2PTR(void *,SvIV(ST(2)))
;
#line 3349 "lib/OpenGL/V2.xs"
		loadProc(glGetUniformfvARB,"glGetUniformfvARB");
#line 6384 "lib/OpenGL/V2.c"
#line 3351 "lib/OpenGL/V2.xs"
		glGetUniformfvARB(programObj, location, params);
#line 6387 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glGetUniformfvARB_p); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glGetUniformfvARB_p)
{
    dVAR; dXSARGS;
    if (items < 2 || items > 3)
       croak_xs_usage(cv,  "programObj, location, count=1");
    {
	GLhandleARB	programObj = (GLhandleARB)SvUV(ST(0))
;
	GLint	location = (int)SvIV(ST(1))
;
	int	count;

	if (items < 3)
	    count = 1;
	else {
	    count = (int)SvIV(ST(2))
;
	}
#line 3360 "lib/OpenGL/V2.xs"
		loadProc(glGetUniformfvARB,"glGetUniformfvARB");
#line 6414 "lib/OpenGL/V2.c"
#line 3362 "lib/OpenGL/V2.xs"
	{
		int i;
		GLfloat	*ret = malloc(sizeof(GLfloat)*count);
		glGetUniformfvARB(programObj, location, ret);

		for(i=0;i<count;i++)
			PUSHs(sv_2mortal(newSVnv(ret[i])));
	}
#line 6424 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glGetUniformivARB_c); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glGetUniformivARB_c)
{
    dVAR; dXSARGS;
    if (items != 3)
       croak_xs_usage(cv,  "programObj, location, params");
    {
	GLhandleARB	programObj = (GLhandleARB)SvUV(ST(0))
;
	GLint	location = (int)SvIV(ST(1))
;
	void *	params = INT2PTR(void *,SvIV(ST(2)))
;
#line 3378 "lib/OpenGL/V2.xs"
		loadProc(glGetUniformivARB,"glGetUniformivARB");
#line 6445 "lib/OpenGL/V2.c"
#line 3380 "lib/OpenGL/V2.xs"
		glGetUniformivARB(programObj, location, params);
#line 6448 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glGetUniformivARB_p); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glGetUniformivARB_p)
{
    dVAR; dXSARGS;
    if (items < 2 || items > 3)
       croak_xs_usage(cv,  "programObj, location, count=1");
    {
	GLhandleARB	programObj = (GLhandleARB)SvUV(ST(0))
;
	GLint	location = (int)SvIV(ST(1))
;
	int	count;

	if (items < 3)
	    count = 1;
	else {
	    count = (int)SvIV(ST(2))
;
	}
#line 3389 "lib/OpenGL/V2.xs"
		loadProc(glGetUniformivARB,"glGetUniformivARB");
#line 6475 "lib/OpenGL/V2.c"
#line 3391 "lib/OpenGL/V2.xs"
	{
		int i;
		GLint	*ret = malloc(sizeof(GLint)*count);
		glGetUniformivARB(programObj, location, ret);

		for(i=0;i<count;i++)
			PUSHs(sv_2mortal(newSViv(ret[i])));
	}
#line 6485 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glGetShaderSourceARB_c); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glGetShaderSourceARB_c)
{
    dVAR; dXSARGS;
    if (items != 4)
       croak_xs_usage(cv,  "obj, maxLength, length, source");
    {
	GLhandleARB	obj = (GLhandleARB)SvUV(ST(0))
;
	GLsizei	maxLength = (int)SvIV(ST(1))
;
	void *	length = INT2PTR(void *,SvIV(ST(2)))
;
	void *	source = INT2PTR(void *,SvIV(ST(3)))
;
#line 3408 "lib/OpenGL/V2.xs"
		loadProc(glGetShaderSourceARB,"glGetShaderSourceARB");
#line 6508 "lib/OpenGL/V2.c"
#line 3410 "lib/OpenGL/V2.xs"
		glGetShaderSourceARB(obj, maxLength, length, source);
#line 6511 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glGetShaderSourceARB_p); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glGetShaderSourceARB_p)
{
    dVAR; dXSARGS;
    if (items != 1)
       croak_xs_usage(cv,  "obj");
    PERL_UNUSED_VAR(ax); /* -Wall */
    SP -= items;
    {
	GLhandleARB	obj = (GLhandleARB)SvUV(ST(0))
;
#line 3417 "lib/OpenGL/V2.xs"
		loadProc(glGetObjectParameterivARB,"glGetObjectParameterivARB");
		loadProc(glGetShaderSourceARB,"glGetShaderSourceARB");
#line 6531 "lib/OpenGL/V2.c"
#line 3420 "lib/OpenGL/V2.xs"
	{
		GLsizei maxLength;
		glGetObjectParameterivARB(obj,GL_OBJECT_SHADER_SOURCE_LENGTH_ARB,
			(GLvoid *)&maxLength);

		EXTEND(sp,1);

		if (maxLength)
		{
			GLsizei length;
			GLcharARB *source;

			source = malloc(maxLength+1);
			glGetShaderSourceARB(obj,maxLength,&length,source);
			source[length] = 0;

			if (*source)
			{
				PUSHs(sv_2mortal(newSVpv(source,0)));
			}
			else
			{
				PUSHs(sv_2mortal(newSVsv(&PL_sv_undef)));
			}

			free(source);
		}
		else
		{
			PUSHs(sv_2mortal(newSVsv(&PL_sv_undef)));
		}
	}
#line 6565 "lib/OpenGL/V2.c"
	PUTBACK;
	return;
    }
}

#endif // GL_ARB_shader_objects
#ifdef GL_ARB_draw_buffers
#define XSubPPtmpAAAF 1


XS_EUPXS(XS_OpenGL_glDrawBuffersARB_c); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glDrawBuffersARB_c)
{
    dVAR; dXSARGS;
    if (items != 2)
       croak_xs_usage(cv,  "n, buffers");
    {
	GLsizei	n = (int)SvIV(ST(0))
;
	void *	buffers = INT2PTR(void *,SvIV(ST(1)))
;
#line 3463 "lib/OpenGL/V2.xs"
		loadProc(glDrawBuffersARB,"glDrawBuffersARB");
#line 6589 "lib/OpenGL/V2.c"
#line 3465 "lib/OpenGL/V2.xs"
	{
		glDrawBuffersARB(n,buffers);
	}
#line 6594 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glDrawBuffersARB_s); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glDrawBuffersARB_s)
{
    dVAR; dXSARGS;
    if (items != 2)
       croak_xs_usage(cv,  "n, buffers");
    {
	GLsizei	n = (int)SvIV(ST(0))
;
	SV *	buffers = ST(1)
;
#line 3475 "lib/OpenGL/V2.xs"
		loadProc(glDrawBuffersARB,"glDrawBuffersARB");
#line 6613 "lib/OpenGL/V2.c"
#line 3477 "lib/OpenGL/V2.xs"
	{
		void * buffers_s = EL(buffers, sizeof(GLuint)*n);
		glDrawBuffersARB(n,buffers_s);
	}
#line 6619 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glDrawBuffersARB_p); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glDrawBuffersARB_p)
{
    dVAR; dXSARGS;
    PERL_UNUSED_VAR(cv); /* -W */
    PERL_UNUSED_VAR(items); /* -W */
    {
#line 3486 "lib/OpenGL/V2.xs"
		loadProc(glDrawBuffersARB,"glDrawBuffersARB");
#line 6634 "lib/OpenGL/V2.c"
#line 3488 "lib/OpenGL/V2.xs"
	{
		if (items)
		{
			GLuint * list = malloc(sizeof(GLuint) * items);
			int i;
			for (i=0;i<items;i++)
				list[i] = SvIV(ST(i));
			glDrawBuffersARB(items, list);
			free(list);
		}
	}
#line 6647 "lib/OpenGL/V2.c"
    }
    XSRETURN_EMPTY;
}

#endif // GL_ARB_draw_buffers
#endif /* HAVE_GL */
#ifdef __cplusplus
extern "C" {
#endif
XS_EXTERNAL(boot_OpenGL__V2); /* prototype to pass -Wmissing-prototypes */
XS_EXTERNAL(boot_OpenGL__V2)
{
#if PERL_VERSION_LE(5, 21, 5)
    dVAR; dXSARGS;
#else
    dVAR; dXSBOOTARGSXSAPIVERCHK;
#endif
#if PERL_VERSION_LE(5, 8, 999) /* PERL_VERSION_LT is 5.33+ */
    char* file = __FILE__;
#else
    const char* file = __FILE__;
#endif

    PERL_UNUSED_VAR(file);

    PERL_UNUSED_VAR(cv); /* -W */
    PERL_UNUSED_VAR(items); /* -W */
#if PERL_VERSION_LE(5, 21, 5)
    XS_VERSION_BOOTCHECK;
#  ifdef XS_APIVERSION_BOOTCHECK
    XS_APIVERSION_BOOTCHECK;
#  endif
#endif

#if XSubPPtmpAAAA
        newXS_deffile("OpenGL::glDrawBuffers_c", XS_OpenGL_glDrawBuffers_c);
        newXS_deffile("OpenGL::glDrawBuffers_s", XS_OpenGL_glDrawBuffers_s);
        newXS_deffile("OpenGL::glDrawBuffers_p", XS_OpenGL_glDrawBuffers_p);
        newXS_deffile("OpenGL::glAttachShader", XS_OpenGL_glAttachShader);
        newXS_deffile("OpenGL::glDeleteShader", XS_OpenGL_glDeleteShader);
        newXS_deffile("OpenGL::glGetShaderiv_p", XS_OpenGL_glGetShaderiv_p);
        newXS_deffile("OpenGL::glGetShaderInfoLog_p", XS_OpenGL_glGetShaderInfoLog_p);
        newXS_deffile("OpenGL::glGetProgramiv_p", XS_OpenGL_glGetProgramiv_p);
#endif
#if XSubPPtmpAAAB
        newXS_deffile("OpenGL::glProgramStringARB_c", XS_OpenGL_glProgramStringARB_c);
        newXS_deffile("OpenGL::glProgramStringARB_s", XS_OpenGL_glProgramStringARB_s);
        newXS_deffile("OpenGL::glProgramStringARB_p", XS_OpenGL_glProgramStringARB_p);
        newXS_deffile("OpenGL::glBindProgramARB", XS_OpenGL_glBindProgramARB);
        newXS_deffile("OpenGL::glDeleteProgramsARB_c", XS_OpenGL_glDeleteProgramsARB_c);
        newXS_deffile("OpenGL::glDeleteProgramsARB_s", XS_OpenGL_glDeleteProgramsARB_s);
        newXS_deffile("OpenGL::glDeleteProgramsARB_p", XS_OpenGL_glDeleteProgramsARB_p);
        newXS_deffile("OpenGL::glGenProgramsARB_c", XS_OpenGL_glGenProgramsARB_c);
        newXS_deffile("OpenGL::glGenProgramsARB_s", XS_OpenGL_glGenProgramsARB_s);
        newXS_deffile("OpenGL::glGenProgramsARB_p", XS_OpenGL_glGenProgramsARB_p);
        newXS_deffile("OpenGL::glProgramEnvParameter4dARB", XS_OpenGL_glProgramEnvParameter4dARB);
        newXS_deffile("OpenGL::glProgramEnvParameter4dvARB_c", XS_OpenGL_glProgramEnvParameter4dvARB_c);
        newXS_deffile("OpenGL::glProgramEnvParameter4dvARB_s", XS_OpenGL_glProgramEnvParameter4dvARB_s);
        newXS_deffile("OpenGL::glProgramEnvParameter4dvARB_p", XS_OpenGL_glProgramEnvParameter4dvARB_p);
        newXS_deffile("OpenGL::glProgramEnvParameter4fARB", XS_OpenGL_glProgramEnvParameter4fARB);
        newXS_deffile("OpenGL::glProgramEnvParameter4fvARB_c", XS_OpenGL_glProgramEnvParameter4fvARB_c);
        newXS_deffile("OpenGL::glProgramEnvParameter4fvARB_s", XS_OpenGL_glProgramEnvParameter4fvARB_s);
        newXS_deffile("OpenGL::glProgramEnvParameter4fvARB_p", XS_OpenGL_glProgramEnvParameter4fvARB_p);
        newXS_deffile("OpenGL::glProgramLocalParameter4dARB", XS_OpenGL_glProgramLocalParameter4dARB);
        newXS_deffile("OpenGL::glProgramLocalParameter4dvARB_c", XS_OpenGL_glProgramLocalParameter4dvARB_c);
        newXS_deffile("OpenGL::glProgramLocalParameter4dvARB_s", XS_OpenGL_glProgramLocalParameter4dvARB_s);
        newXS_deffile("OpenGL::glProgramLocalParameter4dvARB_p", XS_OpenGL_glProgramLocalParameter4dvARB_p);
        newXS_deffile("OpenGL::glProgramLocalParameter4fARB", XS_OpenGL_glProgramLocalParameter4fARB);
        newXS_deffile("OpenGL::glProgramLocalParameter4fvARB_c", XS_OpenGL_glProgramLocalParameter4fvARB_c);
        newXS_deffile("OpenGL::glProgramLocalParameter4fvARB_s", XS_OpenGL_glProgramLocalParameter4fvARB_s);
        newXS_deffile("OpenGL::glProgramLocalParameter4fvARB_p", XS_OpenGL_glProgramLocalParameter4fvARB_p);
        newXS_deffile("OpenGL::glGetProgramEnvParameterdvARB_c", XS_OpenGL_glGetProgramEnvParameterdvARB_c);
        newXS_deffile("OpenGL::glGetProgramEnvParameterdvARB_s", XS_OpenGL_glGetProgramEnvParameterdvARB_s);
        newXS_deffile("OpenGL::glGetProgramEnvParameterdvARB_p", XS_OpenGL_glGetProgramEnvParameterdvARB_p);
        newXS_deffile("OpenGL::glGetProgramEnvParameterfvARB_c", XS_OpenGL_glGetProgramEnvParameterfvARB_c);
        newXS_deffile("OpenGL::glGetProgramEnvParameterfvARB_s", XS_OpenGL_glGetProgramEnvParameterfvARB_s);
        newXS_deffile("OpenGL::glGetProgramEnvParameterfvARB_p", XS_OpenGL_glGetProgramEnvParameterfvARB_p);
        newXS_deffile("OpenGL::glGetProgramLocalParameterdvARB_c", XS_OpenGL_glGetProgramLocalParameterdvARB_c);
        newXS_deffile("OpenGL::glGetProgramLocalParameterdvARB_s", XS_OpenGL_glGetProgramLocalParameterdvARB_s);
        newXS_deffile("OpenGL::glGetProgramLocalParameterdvARB_p", XS_OpenGL_glGetProgramLocalParameterdvARB_p);
        newXS_deffile("OpenGL::glGetProgramLocalParameterfvARB_c", XS_OpenGL_glGetProgramLocalParameterfvARB_c);
        newXS_deffile("OpenGL::glGetProgramLocalParameterfvARB_s", XS_OpenGL_glGetProgramLocalParameterfvARB_s);
        newXS_deffile("OpenGL::glGetProgramLocalParameterfvARB_p", XS_OpenGL_glGetProgramLocalParameterfvARB_p);
        newXS_deffile("OpenGL::glGetProgramivARB_c", XS_OpenGL_glGetProgramivARB_c);
        newXS_deffile("OpenGL::glGetProgramivARB_s", XS_OpenGL_glGetProgramivARB_s);
        newXS_deffile("OpenGL::glGetProgramivARB_p", XS_OpenGL_glGetProgramivARB_p);
        newXS_deffile("OpenGL::glGetProgramStringARB_c", XS_OpenGL_glGetProgramStringARB_c);
        newXS_deffile("OpenGL::glGetProgramStringARB_s", XS_OpenGL_glGetProgramStringARB_s);
        newXS_deffile("OpenGL::glGetProgramStringARB_p", XS_OpenGL_glGetProgramStringARB_p);
        newXS_deffile("OpenGL::glIsProgramARB", XS_OpenGL_glIsProgramARB);
#endif
#if XSubPPtmpAAAC
        newXS_deffile("OpenGL::glVertexAttrib1dARB", XS_OpenGL_glVertexAttrib1dARB);
        newXS_deffile("OpenGL::glVertexAttrib1dvARB_c", XS_OpenGL_glVertexAttrib1dvARB_c);
        newXS_deffile("OpenGL::glVertexAttrib1dvARB_s", XS_OpenGL_glVertexAttrib1dvARB_s);
        newXS_deffile("OpenGL::glVertexAttrib1dvARB_p", XS_OpenGL_glVertexAttrib1dvARB_p);
        newXS_deffile("OpenGL::glVertexAttrib1fARB", XS_OpenGL_glVertexAttrib1fARB);
        newXS_deffile("OpenGL::glVertexAttrib1sARB", XS_OpenGL_glVertexAttrib1sARB);
        newXS_deffile("OpenGL::glVertexAttrib1svARB_c", XS_OpenGL_glVertexAttrib1svARB_c);
        newXS_deffile("OpenGL::glVertexAttrib1svARB_s", XS_OpenGL_glVertexAttrib1svARB_s);
        newXS_deffile("OpenGL::glVertexAttrib1svARB_p", XS_OpenGL_glVertexAttrib1svARB_p);
        newXS_deffile("OpenGL::glVertexAttrib2dARB", XS_OpenGL_glVertexAttrib2dARB);
        newXS_deffile("OpenGL::glVertexAttrib2dvARB_c", XS_OpenGL_glVertexAttrib2dvARB_c);
        newXS_deffile("OpenGL::glVertexAttrib2dvARB_s", XS_OpenGL_glVertexAttrib2dvARB_s);
        newXS_deffile("OpenGL::glVertexAttrib2dvARB_p", XS_OpenGL_glVertexAttrib2dvARB_p);
        newXS_deffile("OpenGL::glVertexAttrib2fARB", XS_OpenGL_glVertexAttrib2fARB);
        newXS_deffile("OpenGL::glVertexAttrib2sARB", XS_OpenGL_glVertexAttrib2sARB);
        newXS_deffile("OpenGL::glVertexAttrib2svARB_c", XS_OpenGL_glVertexAttrib2svARB_c);
        newXS_deffile("OpenGL::glVertexAttrib2svARB_s", XS_OpenGL_glVertexAttrib2svARB_s);
        newXS_deffile("OpenGL::glVertexAttrib2svARB_p", XS_OpenGL_glVertexAttrib2svARB_p);
        newXS_deffile("OpenGL::glVertexAttrib3dARB", XS_OpenGL_glVertexAttrib3dARB);
        newXS_deffile("OpenGL::glVertexAttrib3dvARB_c", XS_OpenGL_glVertexAttrib3dvARB_c);
        newXS_deffile("OpenGL::glVertexAttrib3dvARB_s", XS_OpenGL_glVertexAttrib3dvARB_s);
        newXS_deffile("OpenGL::glVertexAttrib3dvARB_p", XS_OpenGL_glVertexAttrib3dvARB_p);
        newXS_deffile("OpenGL::glVertexAttrib3fARB", XS_OpenGL_glVertexAttrib3fARB);
        newXS_deffile("OpenGL::glVertexAttrib3fvARB_c", XS_OpenGL_glVertexAttrib3fvARB_c);
        newXS_deffile("OpenGL::glVertexAttrib3fvARB_s", XS_OpenGL_glVertexAttrib3fvARB_s);
        newXS_deffile("OpenGL::glVertexAttrib3fvARB_p", XS_OpenGL_glVertexAttrib3fvARB_p);
        newXS_deffile("OpenGL::glVertexAttrib3sARB", XS_OpenGL_glVertexAttrib3sARB);
        newXS_deffile("OpenGL::glVertexAttrib3svARB_c", XS_OpenGL_glVertexAttrib3svARB_c);
        newXS_deffile("OpenGL::glVertexAttrib3svARB_s", XS_OpenGL_glVertexAttrib3svARB_s);
        newXS_deffile("OpenGL::glVertexAttrib3svARB_p", XS_OpenGL_glVertexAttrib3svARB_p);
        newXS_deffile("OpenGL::glVertexAttrib4NbvARB_c", XS_OpenGL_glVertexAttrib4NbvARB_c);
        newXS_deffile("OpenGL::glVertexAttrib4NbvARB_s", XS_OpenGL_glVertexAttrib4NbvARB_s);
        newXS_deffile("OpenGL::glVertexAttrib4NbvARB_p", XS_OpenGL_glVertexAttrib4NbvARB_p);
        newXS_deffile("OpenGL::glVertexAttrib4NivARB_c", XS_OpenGL_glVertexAttrib4NivARB_c);
        newXS_deffile("OpenGL::glVertexAttrib4NivARB_s", XS_OpenGL_glVertexAttrib4NivARB_s);
        newXS_deffile("OpenGL::glVertexAttrib4NivARB_p", XS_OpenGL_glVertexAttrib4NivARB_p);
        newXS_deffile("OpenGL::glVertexAttrib4NsvARB_c", XS_OpenGL_glVertexAttrib4NsvARB_c);
        newXS_deffile("OpenGL::glVertexAttrib4NsvARB_s", XS_OpenGL_glVertexAttrib4NsvARB_s);
        newXS_deffile("OpenGL::glVertexAttrib4NsvARB_p", XS_OpenGL_glVertexAttrib4NsvARB_p);
        newXS_deffile("OpenGL::glVertexAttrib4NubARB", XS_OpenGL_glVertexAttrib4NubARB);
        newXS_deffile("OpenGL::glVertexAttrib4NubvARB_c", XS_OpenGL_glVertexAttrib4NubvARB_c);
        newXS_deffile("OpenGL::glVertexAttrib4NubvARB_s", XS_OpenGL_glVertexAttrib4NubvARB_s);
        newXS_deffile("OpenGL::glVertexAttrib4NubvARB_p", XS_OpenGL_glVertexAttrib4NubvARB_p);
        newXS_deffile("OpenGL::glVertexAttrib4NuivARB_c", XS_OpenGL_glVertexAttrib4NuivARB_c);
        newXS_deffile("OpenGL::glVertexAttrib4NuivARB_s", XS_OpenGL_glVertexAttrib4NuivARB_s);
        newXS_deffile("OpenGL::glVertexAttrib4NuivARB_p", XS_OpenGL_glVertexAttrib4NuivARB_p);
        newXS_deffile("OpenGL::glVertexAttrib4NusvARB_c", XS_OpenGL_glVertexAttrib4NusvARB_c);
        newXS_deffile("OpenGL::glVertexAttrib4NusvARB_s", XS_OpenGL_glVertexAttrib4NusvARB_s);
        newXS_deffile("OpenGL::glVertexAttrib4NusvARB_p", XS_OpenGL_glVertexAttrib4NusvARB_p);
        newXS_deffile("OpenGL::glVertexAttrib4bvARB_c", XS_OpenGL_glVertexAttrib4bvARB_c);
        newXS_deffile("OpenGL::glVertexAttrib4bvARB_s", XS_OpenGL_glVertexAttrib4bvARB_s);
        newXS_deffile("OpenGL::glVertexAttrib4bvARB_p", XS_OpenGL_glVertexAttrib4bvARB_p);
        newXS_deffile("OpenGL::glVertexAttrib4dARB", XS_OpenGL_glVertexAttrib4dARB);
        newXS_deffile("OpenGL::glVertexAttrib4dvARB_c", XS_OpenGL_glVertexAttrib4dvARB_c);
        newXS_deffile("OpenGL::glVertexAttrib4dvARB_s", XS_OpenGL_glVertexAttrib4dvARB_s);
        newXS_deffile("OpenGL::glVertexAttrib4dvARB_p", XS_OpenGL_glVertexAttrib4dvARB_p);
        newXS_deffile("OpenGL::glVertexAttrib4fARB", XS_OpenGL_glVertexAttrib4fARB);
        newXS_deffile("OpenGL::glVertexAttrib4fvARB_c", XS_OpenGL_glVertexAttrib4fvARB_c);
        newXS_deffile("OpenGL::glVertexAttrib4fvARB_s", XS_OpenGL_glVertexAttrib4fvARB_s);
        newXS_deffile("OpenGL::glVertexAttrib4fvARB_p", XS_OpenGL_glVertexAttrib4fvARB_p);
        newXS_deffile("OpenGL::glVertexAttrib4ivARB_c", XS_OpenGL_glVertexAttrib4ivARB_c);
        newXS_deffile("OpenGL::glVertexAttrib4ivARB_s", XS_OpenGL_glVertexAttrib4ivARB_s);
        newXS_deffile("OpenGL::glVertexAttrib4ivARB_p", XS_OpenGL_glVertexAttrib4ivARB_p);
        newXS_deffile("OpenGL::glVertexAttrib4sARB", XS_OpenGL_glVertexAttrib4sARB);
        newXS_deffile("OpenGL::glVertexAttrib4svARB_c", XS_OpenGL_glVertexAttrib4svARB_c);
        newXS_deffile("OpenGL::glVertexAttrib4svARB_s", XS_OpenGL_glVertexAttrib4svARB_s);
        newXS_deffile("OpenGL::glVertexAttrib4svARB_p", XS_OpenGL_glVertexAttrib4svARB_p);
        newXS_deffile("OpenGL::glVertexAttrib4ubvARB_c", XS_OpenGL_glVertexAttrib4ubvARB_c);
        newXS_deffile("OpenGL::glVertexAttrib4ubvARB_s", XS_OpenGL_glVertexAttrib4ubvARB_s);
        newXS_deffile("OpenGL::glVertexAttrib4ubvARB_p", XS_OpenGL_glVertexAttrib4ubvARB_p);
        newXS_deffile("OpenGL::glVertexAttrib4uivARB_c", XS_OpenGL_glVertexAttrib4uivARB_c);
        newXS_deffile("OpenGL::glVertexAttrib4uivARB_s", XS_OpenGL_glVertexAttrib4uivARB_s);
        newXS_deffile("OpenGL::glVertexAttrib4uivARB_p", XS_OpenGL_glVertexAttrib4uivARB_p);
        newXS_deffile("OpenGL::glVertexAttrib4usvARB_c", XS_OpenGL_glVertexAttrib4usvARB_c);
        newXS_deffile("OpenGL::glVertexAttrib4usvARB_s", XS_OpenGL_glVertexAttrib4usvARB_s);
        newXS_deffile("OpenGL::glVertexAttrib4usvARB_p", XS_OpenGL_glVertexAttrib4usvARB_p);
        newXS_deffile("OpenGL::glVertexAttribPointerARB_c", XS_OpenGL_glVertexAttribPointerARB_c);
        newXS_deffile("OpenGL::glVertexAttribPointerARB_p", XS_OpenGL_glVertexAttribPointerARB_p);
        newXS_deffile("OpenGL::glEnableVertexAttribArrayARB", XS_OpenGL_glEnableVertexAttribArrayARB);
        newXS_deffile("OpenGL::glDisableVertexAttribArrayARB", XS_OpenGL_glDisableVertexAttribArrayARB);
        newXS_deffile("OpenGL::glGetVertexAttribdvARB_c", XS_OpenGL_glGetVertexAttribdvARB_c);
        newXS_deffile("OpenGL::glGetVertexAttribdvARB_s", XS_OpenGL_glGetVertexAttribdvARB_s);
        newXS_deffile("OpenGL::glGetVertexAttribdvARB_p", XS_OpenGL_glGetVertexAttribdvARB_p);
        newXS_deffile("OpenGL::glGetVertexAttribfvARB_c", XS_OpenGL_glGetVertexAttribfvARB_c);
        newXS_deffile("OpenGL::glGetVertexAttribfvARB_s", XS_OpenGL_glGetVertexAttribfvARB_s);
        newXS_deffile("OpenGL::glGetVertexAttribfvARB_p", XS_OpenGL_glGetVertexAttribfvARB_p);
        newXS_deffile("OpenGL::glGetVertexAttribivARB_c", XS_OpenGL_glGetVertexAttribivARB_c);
        newXS_deffile("OpenGL::glGetVertexAttribivARB_s", XS_OpenGL_glGetVertexAttribivARB_s);
        newXS_deffile("OpenGL::glGetVertexAttribivARB_p", XS_OpenGL_glGetVertexAttribivARB_p);
        newXS_deffile("OpenGL::glGetVertexAttribPointervARB_c", XS_OpenGL_glGetVertexAttribPointervARB_c);
        newXS_deffile("OpenGL::glGetVertexAttribPointervARB_p", XS_OpenGL_glGetVertexAttribPointervARB_p);
#endif
#if XSubPPtmpAAAD
        newXS_deffile("OpenGL::glBindAttribLocationARB", XS_OpenGL_glBindAttribLocationARB);
        newXS_deffile("OpenGL::glGetActiveAttribARB_c", XS_OpenGL_glGetActiveAttribARB_c);
        newXS_deffile("OpenGL::glGetActiveAttribARB_s", XS_OpenGL_glGetActiveAttribARB_s);
        newXS_deffile("OpenGL::glGetActiveAttribARB_p", XS_OpenGL_glGetActiveAttribARB_p);
        newXS_deffile("OpenGL::glGetAttribLocationARB_c", XS_OpenGL_glGetAttribLocationARB_c);
        newXS_deffile("OpenGL::glGetAttribLocationARB_p", XS_OpenGL_glGetAttribLocationARB_p);
#endif
#if XSubPPtmpAAAE
        newXS_deffile("OpenGL::glDeleteObjectARB", XS_OpenGL_glDeleteObjectARB);
        newXS_deffile("OpenGL::glGetHandleARB", XS_OpenGL_glGetHandleARB);
        newXS_deffile("OpenGL::glDetachObjectARB", XS_OpenGL_glDetachObjectARB);
        newXS_deffile("OpenGL::glCreateShaderObjectARB", XS_OpenGL_glCreateShaderObjectARB);
        newXS_deffile("OpenGL::glShaderSourceARB_c", XS_OpenGL_glShaderSourceARB_c);
        newXS_deffile("OpenGL::glShaderSourceARB_p", XS_OpenGL_glShaderSourceARB_p);
        newXS_deffile("OpenGL::glCompileShaderARB", XS_OpenGL_glCompileShaderARB);
        newXS_deffile("OpenGL::glCreateProgramObjectARB", XS_OpenGL_glCreateProgramObjectARB);
        newXS_deffile("OpenGL::glAttachObjectARB", XS_OpenGL_glAttachObjectARB);
        newXS_deffile("OpenGL::glLinkProgramARB", XS_OpenGL_glLinkProgramARB);
        newXS_deffile("OpenGL::glUseProgramObjectARB", XS_OpenGL_glUseProgramObjectARB);
        newXS_deffile("OpenGL::glValidateProgramARB", XS_OpenGL_glValidateProgramARB);
        newXS_deffile("OpenGL::glUniform1fARB", XS_OpenGL_glUniform1fARB);
        newXS_deffile("OpenGL::glUniform2fARB", XS_OpenGL_glUniform2fARB);
        newXS_deffile("OpenGL::glUniform3fARB", XS_OpenGL_glUniform3fARB);
        newXS_deffile("OpenGL::glUniform4fARB", XS_OpenGL_glUniform4fARB);
        newXS_deffile("OpenGL::glUniform1iARB", XS_OpenGL_glUniform1iARB);
        newXS_deffile("OpenGL::glUniform2iARB", XS_OpenGL_glUniform2iARB);
        newXS_deffile("OpenGL::glUniform3iARB", XS_OpenGL_glUniform3iARB);
        newXS_deffile("OpenGL::glUniform4iARB", XS_OpenGL_glUniform4iARB);
        newXS_deffile("OpenGL::glUniform1fvARB_c", XS_OpenGL_glUniform1fvARB_c);
        newXS_deffile("OpenGL::glUniform1fvARB_s", XS_OpenGL_glUniform1fvARB_s);
        newXS_deffile("OpenGL::glUniform1fvARB_p", XS_OpenGL_glUniform1fvARB_p);
        newXS_deffile("OpenGL::glUniform2fvARB_c", XS_OpenGL_glUniform2fvARB_c);
        newXS_deffile("OpenGL::glUniform2fvARB_s", XS_OpenGL_glUniform2fvARB_s);
        newXS_deffile("OpenGL::glUniform2fvARB_p", XS_OpenGL_glUniform2fvARB_p);
        newXS_deffile("OpenGL::glUniform3fvARB_c", XS_OpenGL_glUniform3fvARB_c);
        newXS_deffile("OpenGL::glUniform3fvARB_s", XS_OpenGL_glUniform3fvARB_s);
        newXS_deffile("OpenGL::glUniform3fvARB_p", XS_OpenGL_glUniform3fvARB_p);
        newXS_deffile("OpenGL::glUniform4fvARB_c", XS_OpenGL_glUniform4fvARB_c);
        newXS_deffile("OpenGL::glUniform4fvARB_s", XS_OpenGL_glUniform4fvARB_s);
        newXS_deffile("OpenGL::glUniform4fvARB_p", XS_OpenGL_glUniform4fvARB_p);
        newXS_deffile("OpenGL::glUniform1ivARB_c", XS_OpenGL_glUniform1ivARB_c);
        newXS_deffile("OpenGL::glUniform1ivARB_s", XS_OpenGL_glUniform1ivARB_s);
        newXS_deffile("OpenGL::glUniform1ivARB_p", XS_OpenGL_glUniform1ivARB_p);
        newXS_deffile("OpenGL::glUniform2ivARB_c", XS_OpenGL_glUniform2ivARB_c);
        newXS_deffile("OpenGL::glUniform2ivARB_s", XS_OpenGL_glUniform2ivARB_s);
        newXS_deffile("OpenGL::glUniform2ivARB_p", XS_OpenGL_glUniform2ivARB_p);
        newXS_deffile("OpenGL::glUniform3ivARB_c", XS_OpenGL_glUniform3ivARB_c);
        newXS_deffile("OpenGL::glUniform3ivARB_s", XS_OpenGL_glUniform3ivARB_s);
        newXS_deffile("OpenGL::glUniform3ivARB_p", XS_OpenGL_glUniform3ivARB_p);
        newXS_deffile("OpenGL::glUniform4ivARB_c", XS_OpenGL_glUniform4ivARB_c);
        newXS_deffile("OpenGL::glUniform4ivARB_s", XS_OpenGL_glUniform4ivARB_s);
        newXS_deffile("OpenGL::glUniform4ivARB_p", XS_OpenGL_glUniform4ivARB_p);
        newXS_deffile("OpenGL::glUniformMatrix2fvARB_c", XS_OpenGL_glUniformMatrix2fvARB_c);
        newXS_deffile("OpenGL::glUniformMatrix2fvARB_s", XS_OpenGL_glUniformMatrix2fvARB_s);
        newXS_deffile("OpenGL::glUniformMatrix2fvARB_p", XS_OpenGL_glUniformMatrix2fvARB_p);
        newXS_deffile("OpenGL::glUniformMatrix3fvARB_c", XS_OpenGL_glUniformMatrix3fvARB_c);
        newXS_deffile("OpenGL::glUniformMatrix3fvARB_s", XS_OpenGL_glUniformMatrix3fvARB_s);
        newXS_deffile("OpenGL::glUniformMatrix3fvARB_p", XS_OpenGL_glUniformMatrix3fvARB_p);
        newXS_deffile("OpenGL::glUniformMatrix4fvARB_c", XS_OpenGL_glUniformMatrix4fvARB_c);
        newXS_deffile("OpenGL::glUniformMatrix4fvARB_s", XS_OpenGL_glUniformMatrix4fvARB_s);
        newXS_deffile("OpenGL::glUniformMatrix4fvARB_p", XS_OpenGL_glUniformMatrix4fvARB_p);
        newXS_deffile("OpenGL::glGetObjectParameterfvARB_c", XS_OpenGL_glGetObjectParameterfvARB_c);
        newXS_deffile("OpenGL::glGetObjectParameterfvARB_s", XS_OpenGL_glGetObjectParameterfvARB_s);
        newXS_deffile("OpenGL::glGetObjectParameterfvARB_p", XS_OpenGL_glGetObjectParameterfvARB_p);
        newXS_deffile("OpenGL::glGetObjectParameterivARB_c", XS_OpenGL_glGetObjectParameterivARB_c);
        newXS_deffile("OpenGL::glGetObjectParameterivARB_s", XS_OpenGL_glGetObjectParameterivARB_s);
        newXS_deffile("OpenGL::glGetObjectParameterivARB_p", XS_OpenGL_glGetObjectParameterivARB_p);
        newXS_deffile("OpenGL::glGetInfoLogARB_c", XS_OpenGL_glGetInfoLogARB_c);
        newXS_deffile("OpenGL::glGetInfoLogARB_p", XS_OpenGL_glGetInfoLogARB_p);
        newXS_deffile("OpenGL::glGetAttachedObjectsARB_c", XS_OpenGL_glGetAttachedObjectsARB_c);
        newXS_deffile("OpenGL::glGetAttachedObjectsARB_s", XS_OpenGL_glGetAttachedObjectsARB_s);
        newXS_deffile("OpenGL::glGetAttachedObjectsARB_p", XS_OpenGL_glGetAttachedObjectsARB_p);
        newXS_deffile("OpenGL::glGetUniformLocationARB_c", XS_OpenGL_glGetUniformLocationARB_c);
        newXS_deffile("OpenGL::glGetUniformLocationARB_p", XS_OpenGL_glGetUniformLocationARB_p);
        newXS_deffile("OpenGL::glGetActiveUniformARB_c", XS_OpenGL_glGetActiveUniformARB_c);
        newXS_deffile("OpenGL::glGetActiveUniformARB_s", XS_OpenGL_glGetActiveUniformARB_s);
        newXS_deffile("OpenGL::glGetActiveUniformARB_p", XS_OpenGL_glGetActiveUniformARB_p);
        newXS_deffile("OpenGL::glGetUniformfvARB_c", XS_OpenGL_glGetUniformfvARB_c);
        newXS_deffile("OpenGL::glGetUniformfvARB_p", XS_OpenGL_glGetUniformfvARB_p);
        newXS_deffile("OpenGL::glGetUniformivARB_c", XS_OpenGL_glGetUniformivARB_c);
        newXS_deffile("OpenGL::glGetUniformivARB_p", XS_OpenGL_glGetUniformivARB_p);
        newXS_deffile("OpenGL::glGetShaderSourceARB_c", XS_OpenGL_glGetShaderSourceARB_c);
        newXS_deffile("OpenGL::glGetShaderSourceARB_p", XS_OpenGL_glGetShaderSourceARB_p);
#endif
#if XSubPPtmpAAAF
        newXS_deffile("OpenGL::glDrawBuffersARB_c", XS_OpenGL_glDrawBuffersARB_c);
        newXS_deffile("OpenGL::glDrawBuffersARB_s", XS_OpenGL_glDrawBuffersARB_s);
        newXS_deffile("OpenGL::glDrawBuffersARB_p", XS_OpenGL_glDrawBuffersARB_p);
#endif

    /* Initialisation Section */

#if XSubPPtmpAAAA
#endif
#if XSubPPtmpAAAB
#endif
#if XSubPPtmpAAAC
#endif
#if XSubPPtmpAAAD
#endif
#if XSubPPtmpAAAE
#endif
#if XSubPPtmpAAAF
#endif
#line 6937 "lib/OpenGL/V2.c"

    /* End of Initialisation Section */

#if PERL_VERSION_LE(5, 21, 5)
#  if PERL_VERSION_GE(5, 9, 0)
    if (PL_unitcheckav)
        call_list(PL_scopestack_ix, PL_unitcheckav);
#  endif
    XSRETURN_YES;
#else
    Perl_xs_boot_epilog(aTHX_ ax);
#endif
}

#ifdef __cplusplus
}
#endif
