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

#line 1 "pogl_gl_Vert_Multi.xs"
/*  Last saved: Sun 06 Sep 2009 02:10:16 PM*/

/*  Copyright (c) 1998 Kenneth Albanowski. All rights reserved.
 *  Copyright (c) 2007 Bob Free. All rights reserved.
 *  Copyright (c) 2009 Chris Marshall. All rights reserved.
 *  This program is free software; you can redistribute it and/or
 *  modify it under the same terms as Perl itself.
 */

/* OpenGL GLX bindings */
#define IN_POGL_GLX_XS

#include <stdio.h>

#include "pgopogl.h"

#ifdef HAVE_GL
#include "gl_util.h"

/* Note: this is caching procs once for all contexts */
/* !!! This should instead cache per context */
#if defined(_WIN32) || (defined(__CYGWIN__) && defined(HAVE_W32API))
#define loadProc(proc,name) \
{ \
  if (!proc) \
  { \
    proc = (void *)wglGetProcAddress(name); \
    if (!proc) croak(name " is not supported by this renderer"); \
  } \
}
#define testProc(proc,name) ((proc) ? 1 : !!(proc = (void *)wglGetProcAddress(name)))
#else /* not using WGL */
#define loadProc(proc,name)
#define testProc(proc,name) 1
#endif /* not defined _WIN32, __CYGWIN__, and HAVE_W32API */
#endif /* defined HAVE_GL */

#ifdef HAVE_GLX
#include "glx_util.h"
#endif /* defined HAVE_GLX */

#ifdef HAVE_GLU
#include "glu_util.h"
#endif /* defined HAVE_GLU */





#line 60 "pogl_gl_Vert_Multi.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(pTHX_ const CV *const cv, const char *const params);

STATIC void
S_croak_xs_usage(pTHX_ 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(aTHX_ "Usage: %s::%s(%s)", hvname, gvname, params);
        else
            Perl_croak(aTHX_ "Usage: %s(%s)", gvname, params);
    } else {
        /* Pants. I don't think that it should be possible to get here. */
        Perl_croak(aTHX_ "Usage: CODE(0x%"UVxf")(%s)", PTR2UV(cv), params);
    }
}
#undef  PERL_ARGS_ASSERT_CROAK_XS_USAGE

#ifdef PERL_IMPLICIT_CONTEXT
#define croak_xs_usage(a,b)    S_croak_xs_usage(aTHX_ a,b)
#else
#define croak_xs_usage        S_croak_xs_usage
#endif

#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) */

#line 202 "pogl_gl_Vert_Multi.c"
#ifdef HAVE_GL
#ifdef GL_EXT_vertex_array
#define XSubPPtmpAAAA 1


XS_EUPXS(XS_OpenGL_glVertexPointerEXT_c); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glVertexPointerEXT_c)
{
    dVAR; dXSARGS;
    if (items != 5)
       croak_xs_usage(cv,  "size, type, stride, count, pointer");
    {
	GLint	size = (int)SvIV(ST(0))
;
	GLenum	type = (int)SvIV(ST(1))
;
	GLsizei	stride = (int)SvIV(ST(2))
;
	GLsizei	count = (int)SvIV(ST(3))
;
	void *	pointer = INT2PTR(void *,SvIV(ST(4)))
;
#line 69 "pogl_gl_Vert_Multi.xs"
		loadProc(glVertexPointerEXT,"glVertexPointerEXT");
#line 227 "pogl_gl_Vert_Multi.c"
#line 71 "pogl_gl_Vert_Multi.xs"
		glVertexPointerEXT(size, type, stride, count, pointer);
#line 230 "pogl_gl_Vert_Multi.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glVertexPointerEXT_s); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glVertexPointerEXT_s)
{
    dVAR; dXSARGS;
    if (items != 5)
       croak_xs_usage(cv,  "size, type, stride, count, pointer");
    {
	GLint	size = (int)SvIV(ST(0))
;
	GLenum	type = (int)SvIV(ST(1))
;
	GLsizei	stride = (int)SvIV(ST(2))
;
	GLsizei	count = (int)SvIV(ST(3))
;
	SV *	pointer = ST(4)
;
#line 82 "pogl_gl_Vert_Multi.xs"
		loadProc(glVertexPointerEXT,"glVertexPointerEXT");
#line 255 "pogl_gl_Vert_Multi.c"
#line 84 "pogl_gl_Vert_Multi.xs"
	{
		int width = stride ? stride : (sizeof(type)*size);
		void * pointer_s = EL(pointer, width*count);
		glVertexPointerEXT(size, type, stride, count, pointer_s);
	}
#line 262 "pogl_gl_Vert_Multi.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glVertexPointerEXT_p); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glVertexPointerEXT_p)
{
    dVAR; dXSARGS;
    if (items != 2)
       croak_xs_usage(cv,  "size, oga");
    {
	GLint	size = (int)SvIV(ST(0))
;
	OpenGL__Array	oga;

	if (SvROK(ST(1)) && sv_derived_from(ST(1), "OpenGL::Array")) {
	    IV tmp = SvIV((SV*)SvRV(ST(1)));
	    oga = INT2PTR(OpenGL__Array,tmp);
	}
	else
	    Perl_croak_nocontext("%s: %s is not of type %s",
			"OpenGL::glVertexPointerEXT_p",
			"oga", "OpenGL::Array")
;
#line 96 "pogl_gl_Vert_Multi.xs"
		loadProc(glVertexPointerEXT,"glVertexPointerEXT");
#line 290 "pogl_gl_Vert_Multi.c"
#line 98 "pogl_gl_Vert_Multi.xs"
	{
#ifdef GL_ARB_vertex_buffer_object
		if (testProc(glBindBufferARB,"glBindBufferARB"))
		{
			glBindBufferARB(GL_ARRAY_BUFFER_ARB, oga->bind);
		}
		glVertexPointerEXT(size, oga->types[0], 0, oga->item_count/size,
			oga->bind ? 0 : oga->data);
#else
		glVertexPointerEXT(size, oga->types[0], 0, oga->item_count/size,
			oga->data);
#endif
	}
#line 305 "pogl_gl_Vert_Multi.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glNormalPointerEXT_c); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glNormalPointerEXT_c)
{
    dVAR; dXSARGS;
    if (items != 4)
       croak_xs_usage(cv,  "type, stride, count, pointer");
    {
	GLenum	type = (int)SvIV(ST(0))
;
	GLsizei	stride = (int)SvIV(ST(1))
;
	GLsizei	count = (int)SvIV(ST(2))
;
	void *	pointer = INT2PTR(void *,SvIV(ST(3)))
;
#line 120 "pogl_gl_Vert_Multi.xs"
		loadProc(glNormalPointerEXT,"glNormalPointerEXT");
#line 328 "pogl_gl_Vert_Multi.c"
#line 122 "pogl_gl_Vert_Multi.xs"
		glNormalPointerEXT(type, stride, count, pointer);
#line 331 "pogl_gl_Vert_Multi.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glNormalPointerEXT_s); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glNormalPointerEXT_s)
{
    dVAR; dXSARGS;
    if (items != 4)
       croak_xs_usage(cv,  "type, stride, count, pointer");
    {
	GLenum	type = (int)SvIV(ST(0))
;
	GLsizei	stride = (int)SvIV(ST(1))
;
	GLsizei	count = (int)SvIV(ST(2))
;
	SV *	pointer = ST(3)
;
#line 132 "pogl_gl_Vert_Multi.xs"
		loadProc(glNormalPointerEXT,"glNormalPointerEXT");
#line 354 "pogl_gl_Vert_Multi.c"
#line 134 "pogl_gl_Vert_Multi.xs"
	{
		int width = stride ? stride : (sizeof(type)*3);
		void * pointer_s = EL(pointer, width*count);
		glNormalPointerEXT(type, stride, count, pointer_s);
	}
#line 361 "pogl_gl_Vert_Multi.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glNormalPointerEXT_p); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glNormalPointerEXT_p)
{
    dVAR; dXSARGS;
    if (items != 1)
       croak_xs_usage(cv,  "oga");
    {
	OpenGL__Array	oga;

	if (SvROK(ST(0)) && sv_derived_from(ST(0), "OpenGL::Array")) {
	    IV tmp = SvIV((SV*)SvRV(ST(0)));
	    oga = INT2PTR(OpenGL__Array,tmp);
	}
	else
	    Perl_croak_nocontext("%s: %s is not of type %s",
			"OpenGL::glNormalPointerEXT_p",
			"oga", "OpenGL::Array")
;
#line 145 "pogl_gl_Vert_Multi.xs"
		loadProc(glNormalPointerEXT,"glNormalPointerEXT");
#line 387 "pogl_gl_Vert_Multi.c"
#line 147 "pogl_gl_Vert_Multi.xs"
	{
#ifdef GL_ARB_vertex_buffer_object
		if (testProc(glBindBufferARB,"glBindBufferARB"))
		{
			glBindBufferARB(GL_ARRAY_BUFFER_ARB, oga->bind);
		}
		glNormalPointerEXT(oga->types[0], 0, oga->item_count/3,
			oga->bind ? 0 : oga->data);
#else
		glNormalPointerEXT(oga->types[0], 0, oga->item_count/3,
			oga->data);
#endif
	}
#line 402 "pogl_gl_Vert_Multi.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glColorPointerEXT_c); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glColorPointerEXT_c)
{
    dVAR; dXSARGS;
    if (items != 5)
       croak_xs_usage(cv,  "size, type, stride, count, pointer");
    {
	GLint	size = (int)SvIV(ST(0))
;
	GLenum	type = (int)SvIV(ST(1))
;
	GLsizei	stride = (int)SvIV(ST(2))
;
	GLsizei	count = (int)SvIV(ST(3))
;
	void *	pointer = INT2PTR(void *,SvIV(ST(4)))
;
#line 170 "pogl_gl_Vert_Multi.xs"
		loadProc(glColorPointerEXT,"glColorPointerEXT");
#line 427 "pogl_gl_Vert_Multi.c"
#line 172 "pogl_gl_Vert_Multi.xs"
		glColorPointerEXT(size, type, stride, count, pointer);
#line 430 "pogl_gl_Vert_Multi.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glColorPointerEXT_s); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glColorPointerEXT_s)
{
    dVAR; dXSARGS;
    if (items != 5)
       croak_xs_usage(cv,  "size, type, stride, count, pointer");
    {
	GLint	size = (int)SvIV(ST(0))
;
	GLenum	type = (int)SvIV(ST(1))
;
	GLsizei	stride = (int)SvIV(ST(2))
;
	GLsizei	count = (int)SvIV(ST(3))
;
	SV *	pointer = ST(4)
;
#line 183 "pogl_gl_Vert_Multi.xs"
		loadProc(glColorPointerEXT,"glColorPointerEXT");
#line 455 "pogl_gl_Vert_Multi.c"
#line 185 "pogl_gl_Vert_Multi.xs"
	{
		int width = stride ? stride : (sizeof(type)*size);
		void * pointer_s = EL(pointer, width*count);
		glColorPointerEXT(size, type, stride, count, pointer_s);
	}
#line 462 "pogl_gl_Vert_Multi.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glColorPointerEXT_oga); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glColorPointerEXT_oga)
{
    dVAR; dXSARGS;
    if (items != 2)
       croak_xs_usage(cv,  "size, oga");
    {
	GLint	size = (int)SvIV(ST(0))
;
	OpenGL__Array	oga;

	if (SvROK(ST(1)) && sv_derived_from(ST(1), "OpenGL::Array")) {
	    IV tmp = SvIV((SV*)SvRV(ST(1)));
	    oga = INT2PTR(OpenGL__Array,tmp);
	}
	else
	    Perl_croak_nocontext("%s: %s is not of type %s",
			"OpenGL::glColorPointerEXT_oga",
			"oga", "OpenGL::Array")
;
#line 197 "pogl_gl_Vert_Multi.xs"
		loadProc(glColorPointerEXT,"glColorPointerEXT");
#line 490 "pogl_gl_Vert_Multi.c"
#line 199 "pogl_gl_Vert_Multi.xs"
	{
#ifdef GL_ARB_vertex_buffer_object
		if (testProc(glBindBufferARB,"glBindBufferARB"))
		{
			glBindBufferARB(GL_ARRAY_BUFFER_ARB, oga->bind);
		}
		glColorPointerEXT(size, oga->types[0], 0, oga->item_count/size,
			oga->bind ? 0 : oga->data);
#else
		glColorPointerEXT(size, oga->types[0], 0, oga->item_count/size,
			oga->data);
#endif
	}
#line 505 "pogl_gl_Vert_Multi.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glIndexPointerEXT_c); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glIndexPointerEXT_c)
{
    dVAR; dXSARGS;
    if (items != 4)
       croak_xs_usage(cv,  "type, stride, count, pointer");
    {
	GLenum	type = (int)SvIV(ST(0))
;
	GLsizei	stride = (int)SvIV(ST(1))
;
	GLsizei	count = (int)SvIV(ST(2))
;
	void *	pointer = INT2PTR(void *,SvIV(ST(3)))
;
#line 221 "pogl_gl_Vert_Multi.xs"
		loadProc(glIndexPointerEXT,"glIndexPointerEXT");
#line 528 "pogl_gl_Vert_Multi.c"
#line 223 "pogl_gl_Vert_Multi.xs"
		glIndexPointerEXT(type, stride, count, pointer);
#line 531 "pogl_gl_Vert_Multi.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glIndexPointerEXT_s); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glIndexPointerEXT_s)
{
    dVAR; dXSARGS;
    if (items != 4)
       croak_xs_usage(cv,  "type, stride, count, pointer");
    {
	GLenum	type = (int)SvIV(ST(0))
;
	GLsizei	stride = (int)SvIV(ST(1))
;
	GLsizei	count = (int)SvIV(ST(2))
;
	SV *	pointer = ST(3)
;
#line 233 "pogl_gl_Vert_Multi.xs"
		loadProc(glIndexPointerEXT,"glIndexPointerEXT");
#line 554 "pogl_gl_Vert_Multi.c"
#line 235 "pogl_gl_Vert_Multi.xs"
	{
		int width = stride ? stride : (sizeof(type));
		void * pointer_s = EL(pointer, width*count);
		glIndexPointerEXT(type, stride, count, pointer_s);
	}
#line 561 "pogl_gl_Vert_Multi.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glIndexPointerEXT_p); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glIndexPointerEXT_p)
{
    dVAR; dXSARGS;
    if (items != 1)
       croak_xs_usage(cv,  "oga");
    {
	OpenGL__Array	oga;

	if (SvROK(ST(0)) && sv_derived_from(ST(0), "OpenGL::Array")) {
	    IV tmp = SvIV((SV*)SvRV(ST(0)));
	    oga = INT2PTR(OpenGL__Array,tmp);
	}
	else
	    Perl_croak_nocontext("%s: %s is not of type %s",
			"OpenGL::glIndexPointerEXT_p",
			"oga", "OpenGL::Array")
;
#line 246 "pogl_gl_Vert_Multi.xs"
		loadProc(glIndexPointerEXT,"glIndexPointerEXT");
#line 587 "pogl_gl_Vert_Multi.c"
#line 248 "pogl_gl_Vert_Multi.xs"
	{
#ifdef GL_ARB_vertex_buffer_object
		if (testProc(glBindBufferARB,"glBindBufferARB"))
		{
			glBindBufferARB(GL_ARRAY_BUFFER_ARB, oga->bind);
		}
		glIndexPointerEXT(oga->types[0], 0, oga->item_count,
			oga->bind ? 0 : oga->data);
#else
		glIndexPointerEXT(oga->types[0], 0, oga->item_count,
			oga->data);
#endif
	}
#line 602 "pogl_gl_Vert_Multi.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glTexCoordPointerEXT_c); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glTexCoordPointerEXT_c)
{
    dVAR; dXSARGS;
    if (items != 5)
       croak_xs_usage(cv,  "size, type, stride, count, pointer");
    {
	GLint	size = (int)SvIV(ST(0))
;
	GLenum	type = (int)SvIV(ST(1))
;
	GLsizei	count = (int)SvIV(ST(3))
;
	GLsizei	stride = (int)SvIV(ST(2))
;
	void *	pointer = INT2PTR(void *,SvIV(ST(4)))
;
#line 271 "pogl_gl_Vert_Multi.xs"
		loadProc(glTexCoordPointerEXT,"glTexCoordPointerEXT");
#line 627 "pogl_gl_Vert_Multi.c"
#line 273 "pogl_gl_Vert_Multi.xs"
		glTexCoordPointerEXT(size, type, stride, count, pointer);
#line 630 "pogl_gl_Vert_Multi.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glTexCoordPointerEXT_s); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glTexCoordPointerEXT_s)
{
    dVAR; dXSARGS;
    if (items != 5)
       croak_xs_usage(cv,  "size, type, stride, count, pointer");
    {
	GLint	size = (int)SvIV(ST(0))
;
	GLenum	type = (int)SvIV(ST(1))
;
	GLsizei	stride = (int)SvIV(ST(2))
;
	GLsizei	count = (int)SvIV(ST(3))
;
	SV *	pointer = ST(4)
;
#line 284 "pogl_gl_Vert_Multi.xs"
		loadProc(glTexCoordPointerEXT,"glTexCoordPointerEXT");
#line 655 "pogl_gl_Vert_Multi.c"
#line 286 "pogl_gl_Vert_Multi.xs"
	{
		int width = stride ? stride : (sizeof(type)*size);
		void * pointer_s = EL(pointer, width*count);
		glTexCoordPointerEXT(size, type, stride, count, pointer_s);
	}
#line 662 "pogl_gl_Vert_Multi.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glTexCoordPointerEXT_p); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glTexCoordPointerEXT_p)
{
    dVAR; dXSARGS;
    if (items != 2)
       croak_xs_usage(cv,  "size, oga");
    {
	GLint	size = (int)SvIV(ST(0))
;
	OpenGL__Array	oga;

	if (SvROK(ST(1)) && sv_derived_from(ST(1), "OpenGL::Array")) {
	    IV tmp = SvIV((SV*)SvRV(ST(1)));
	    oga = INT2PTR(OpenGL__Array,tmp);
	}
	else
	    Perl_croak_nocontext("%s: %s is not of type %s",
			"OpenGL::glTexCoordPointerEXT_p",
			"oga", "OpenGL::Array")
;
#line 298 "pogl_gl_Vert_Multi.xs"
		loadProc(glTexCoordPointerEXT,"glTexCoordPointerEXT");
#line 690 "pogl_gl_Vert_Multi.c"
#line 300 "pogl_gl_Vert_Multi.xs"
	{
#ifdef GL_ARB_vertex_buffer_object
		if (testProc(glBindBufferARB,"glBindBufferARB"))
		{
			glBindBufferARB(GL_ARRAY_BUFFER_ARB, oga->bind);
		}
		glTexCoordPointerEXT(size, oga->types[0], 0, oga->item_count/size,
			oga->bind ? 0 : oga->data);
#else
		glTexCoordPointerEXT(size, oga->types[0], 0, oga->item_count/size,
			oga->data);
#endif
	}
#line 705 "pogl_gl_Vert_Multi.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glEdgeFlagPointerEXT_c); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glEdgeFlagPointerEXT_c)
{
    dVAR; dXSARGS;
    if (items != 3)
       croak_xs_usage(cv,  "stride, count, pointer");
    {
	GLint	stride = (int)SvIV(ST(0))
;
	GLsizei	count = (int)SvIV(ST(1))
;
	void *	pointer = INT2PTR(void *,SvIV(ST(2)))
;
#line 321 "pogl_gl_Vert_Multi.xs"
		loadProc(glEdgeFlagPointerEXT,"glEdgeFlagPointerEXT");
#line 726 "pogl_gl_Vert_Multi.c"
#line 323 "pogl_gl_Vert_Multi.xs"
		glEdgeFlagPointerEXT(stride, count, pointer);
#line 729 "pogl_gl_Vert_Multi.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glEdgeFlagPointerEXT_s); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glEdgeFlagPointerEXT_s)
{
    dVAR; dXSARGS;
    if (items != 3)
       croak_xs_usage(cv,  "stride, count, pointer");
    {
	GLsizei	stride = (int)SvIV(ST(0))
;
	GLsizei	count = (int)SvIV(ST(1))
;
	SV *	pointer = ST(2)
;
#line 332 "pogl_gl_Vert_Multi.xs"
		loadProc(glEdgeFlagPointerEXT,"glEdgeFlagPointerEXT");
#line 750 "pogl_gl_Vert_Multi.c"
#line 334 "pogl_gl_Vert_Multi.xs"
	{
		int width = stride ? stride : (sizeof(GLboolean));
		void * pointer_s = EL(pointer, width*count);
		glEdgeFlagPointerEXT(stride, count, pointer_s);
	}
#line 757 "pogl_gl_Vert_Multi.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glEdgeFlagPointerEXT_oga); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glEdgeFlagPointerEXT_oga)
{
    dVAR; dXSARGS;
    if (items != 1)
       croak_xs_usage(cv,  "oga");
    {
	OpenGL__Array	oga;

	if (SvROK(ST(0)) && sv_derived_from(ST(0), "OpenGL::Array")) {
	    IV tmp = SvIV((SV*)SvRV(ST(0)));
	    oga = INT2PTR(OpenGL__Array,tmp);
	}
	else
	    Perl_croak_nocontext("%s: %s is not of type %s",
			"OpenGL::glEdgeFlagPointerEXT_oga",
			"oga", "OpenGL::Array")
;
#line 345 "pogl_gl_Vert_Multi.xs"
		loadProc(glEdgeFlagPointerEXT,"glEdgeFlagPointerEXT");
#line 783 "pogl_gl_Vert_Multi.c"
#line 347 "pogl_gl_Vert_Multi.xs"
	{
#ifdef GL_ARB_vertex_buffer_object
		if (testProc(glBindBufferARB,"glBindBufferARB"))
		{
			glBindBufferARB(GL_ARRAY_BUFFER_ARB, oga->bind);
		}
		glEdgeFlagPointerEXT(0, oga->item_count, oga->bind ? 0 : oga->data);
#else
		glEdgeFlagPointerEXT(0, oga->item_count, oga->data);
#endif
	}
#line 796 "pogl_gl_Vert_Multi.c"
    }
    XSRETURN_EMPTY;
}

#endif
#ifdef GL_ARB_draw_buffers
#define XSubPPtmpAAAB 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 370 "pogl_gl_Vert_Multi.xs"
		loadProc(glDrawBuffersARB,"glDrawBuffersARB");
#line 819 "pogl_gl_Vert_Multi.c"
#line 372 "pogl_gl_Vert_Multi.xs"
	{
		glDrawBuffersARB(n,buffers);
	}
#line 824 "pogl_gl_Vert_Multi.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 382 "pogl_gl_Vert_Multi.xs"
		loadProc(glDrawBuffersARB,"glDrawBuffersARB");
#line 843 "pogl_gl_Vert_Multi.c"
#line 384 "pogl_gl_Vert_Multi.xs"
	{
		void * buffers_s = EL(buffers, sizeof(GLuint)*n);
		glDrawBuffersARB(n,buffers_s);
	}
#line 849 "pogl_gl_Vert_Multi.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 */
    {
#line 393 "pogl_gl_Vert_Multi.xs"
		loadProc(glDrawBuffersARB,"glDrawBuffersARB");
#line 863 "pogl_gl_Vert_Multi.c"
#line 395 "pogl_gl_Vert_Multi.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 876 "pogl_gl_Vert_Multi.c"
    }
    XSRETURN_EMPTY;
}

#endif
#ifdef GL_VERSION_2_0
#define XSubPPtmpAAAC 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 416 "pogl_gl_Vert_Multi.xs"
	{
		glDrawBuffers(n,buffers);
	}
#line 901 "pogl_gl_Vert_Multi.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 426 "pogl_gl_Vert_Multi.xs"
	{
		void * buffers_s = EL(buffers, sizeof(GLuint)*n);
		glDrawBuffers(n,buffers_s);
	}
#line 923 "pogl_gl_Vert_Multi.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 */
    {
#line 435 "pogl_gl_Vert_Multi.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 948 "pogl_gl_Vert_Multi.c"
    }
    XSRETURN_EMPTY;
}

#endif
#ifdef GL_EXT_framebuffer_object
#define XSubPPtmpAAAD 1


XS_EUPXS(XS_OpenGL_glIsRenderbufferEXT); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glIsRenderbufferEXT)
{
    dVAR; dXSARGS;
    if (items != 1)
       croak_xs_usage(cv,  "renderbuffer");
    {
	GLuint	renderbuffer = (unsigned int)SvUV(ST(0))
;
	GLboolean	RETVAL;
#line 457 "pogl_gl_Vert_Multi.xs"
		loadProc(glIsRenderbufferEXT,"glIsRenderbufferEXT");
#line 970 "pogl_gl_Vert_Multi.c"
#line 459 "pogl_gl_Vert_Multi.xs"
	{
		RETVAL = glIsRenderbufferEXT(renderbuffer);
	}
#line 975 "pogl_gl_Vert_Multi.c"
	ST(0) = boolSV(RETVAL);
    }
    XSRETURN(1);
}


XS_EUPXS(XS_OpenGL_glBindRenderbufferEXT); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glBindRenderbufferEXT)
{
    dVAR; dXSARGS;
    if (items != 2)
       croak_xs_usage(cv,  "target, renderbuffer");
    {
	GLenum	target = (int)SvIV(ST(0))
;
	GLuint	renderbuffer = (unsigned int)SvUV(ST(1))
;
#line 471 "pogl_gl_Vert_Multi.xs"
		loadProc(glBindRenderbufferEXT,"glBindRenderbufferEXT");
#line 995 "pogl_gl_Vert_Multi.c"
#line 473 "pogl_gl_Vert_Multi.xs"
	{
		glBindRenderbufferEXT(target,renderbuffer);
	}
#line 1000 "pogl_gl_Vert_Multi.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glDeleteRenderbuffersEXT_c); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glDeleteRenderbuffersEXT_c)
{
    dVAR; dXSARGS;
    if (items != 2)
       croak_xs_usage(cv,  "n, renderbuffers");
    {
	GLsizei	n = (int)SvIV(ST(0))
;
	void *	renderbuffers = INT2PTR(void *,SvIV(ST(1)))
;
#line 483 "pogl_gl_Vert_Multi.xs"
		loadProc(glDeleteRenderbuffersEXT,"glDeleteRenderbuffersEXT");
#line 1019 "pogl_gl_Vert_Multi.c"
#line 485 "pogl_gl_Vert_Multi.xs"
	{
		glDeleteRenderbuffersEXT(n,renderbuffers);
	}
#line 1024 "pogl_gl_Vert_Multi.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glDeleteRenderbuffersEXT_s); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glDeleteRenderbuffersEXT_s)
{
    dVAR; dXSARGS;
    if (items != 2)
       croak_xs_usage(cv,  "n, renderbuffers");
    {
	GLsizei	n = (int)SvIV(ST(0))
;
	SV *	renderbuffers = ST(1)
;
#line 495 "pogl_gl_Vert_Multi.xs"
		loadProc(glDeleteRenderbuffersEXT,"glDeleteRenderbuffersEXT");
#line 1043 "pogl_gl_Vert_Multi.c"
#line 497 "pogl_gl_Vert_Multi.xs"
	{
		void * renderbuffers_s = EL(renderbuffers, sizeof(GLuint)*n);
		glDeleteRenderbuffersEXT(n,renderbuffers_s);
	}
#line 1049 "pogl_gl_Vert_Multi.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glDeleteRenderbuffersEXT_p); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glDeleteRenderbuffersEXT_p)
{
    dVAR; dXSARGS;
    PERL_UNUSED_VAR(cv); /* -W */
    {
#line 506 "pogl_gl_Vert_Multi.xs"
		loadProc(glDeleteRenderbuffersEXT,"glDeleteRenderbuffersEXT");
#line 1063 "pogl_gl_Vert_Multi.c"
#line 508 "pogl_gl_Vert_Multi.xs"
	{
		if (items) {
			GLuint * list = malloc(sizeof(GLuint) * items);
			int i;

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

			glDeleteRenderbuffersEXT(items, list);
			free(list);
		}
	}
#line 1077 "pogl_gl_Vert_Multi.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glGenRenderbuffersEXT_c); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glGenRenderbuffersEXT_c)
{
    dVAR; dXSARGS;
    if (items != 2)
       croak_xs_usage(cv,  "n, renderbuffers");
    {
	GLsizei	n = (int)SvIV(ST(0))
;
	void *	renderbuffers = INT2PTR(void *,SvIV(ST(1)))
;
#line 527 "pogl_gl_Vert_Multi.xs"
		loadProc(glGenRenderbuffersEXT,"glGenRenderbuffersEXT");
#line 1096 "pogl_gl_Vert_Multi.c"
#line 529 "pogl_gl_Vert_Multi.xs"
	{
		glGenRenderbuffersEXT(n, renderbuffers);
	}
#line 1101 "pogl_gl_Vert_Multi.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glGenRenderbuffersEXT_s); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glGenRenderbuffersEXT_s)
{
    dVAR; dXSARGS;
    if (items != 2)
       croak_xs_usage(cv,  "n, renderbuffers");
    {
	GLsizei	n = (int)SvIV(ST(0))
;
	SV *	renderbuffers = ST(1)
;
#line 539 "pogl_gl_Vert_Multi.xs"
		loadProc(glGenRenderbuffersEXT,"glGenRenderbuffersEXT");
#line 1120 "pogl_gl_Vert_Multi.c"
#line 541 "pogl_gl_Vert_Multi.xs"
	{
		void * renderbuffers_s = EL(renderbuffers, sizeof(GLuint)*n);
		glGenRenderbuffersEXT(n, renderbuffers_s);
	}
#line 1126 "pogl_gl_Vert_Multi.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glGenRenderbuffersEXT_p); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glGenRenderbuffersEXT_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 551 "pogl_gl_Vert_Multi.xs"
		loadProc(glGenRenderbuffersEXT,"glGenRenderbuffersEXT");
#line 1145 "pogl_gl_Vert_Multi.c"
#line 553 "pogl_gl_Vert_Multi.xs"
	if (n)
	{
		GLuint * renderbuffers = malloc(sizeof(GLuint) * n);
		int i;

		glGenRenderbuffersEXT(n, renderbuffers);

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

		free(renderbuffers);
	} 
#line 1160 "pogl_gl_Vert_Multi.c"
	PUTBACK;
	return;
    }
}


XS_EUPXS(XS_OpenGL_glRenderbufferStorageEXT); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glRenderbufferStorageEXT)
{
    dVAR; dXSARGS;
    if (items != 4)
       croak_xs_usage(cv,  "target, internalformat, width, height");
    {
	GLenum	target = (int)SvIV(ST(0))
;
	GLenum	internalformat = (int)SvIV(ST(1))
;
	GLsizei	width = (int)SvIV(ST(2))
;
	GLsizei	height = (int)SvIV(ST(3))
;
#line 575 "pogl_gl_Vert_Multi.xs"
		loadProc(glRenderbufferStorageEXT,"glRenderbufferStorageEXT");
#line 1184 "pogl_gl_Vert_Multi.c"
#line 577 "pogl_gl_Vert_Multi.xs"
	{
		glRenderbufferStorageEXT(target,internalformat,width,height);
	}
#line 1189 "pogl_gl_Vert_Multi.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glGetRenderbufferParameterivEXT_s); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glGetRenderbufferParameterivEXT_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 588 "pogl_gl_Vert_Multi.xs"
		loadProc(glGetRenderbufferParameterivEXT,"glGetRenderbufferParameterivEXT");
#line 1210 "pogl_gl_Vert_Multi.c"
#line 590 "pogl_gl_Vert_Multi.xs"
	{
		GLint * params_s = EL(params, sizeof(GLint));
		glGetRenderbufferParameterivEXT(target,pname,params_s);
        }
#line 1216 "pogl_gl_Vert_Multi.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glGetRenderbufferParameterivEXT_c); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glGetRenderbufferParameterivEXT_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 602 "pogl_gl_Vert_Multi.xs"
		loadProc(glGetRenderbufferParameterivEXT,"glGetRenderbufferParameterivEXT");
#line 1237 "pogl_gl_Vert_Multi.c"
#line 604 "pogl_gl_Vert_Multi.xs"
	{
		glGetRenderbufferParameterivEXT(target,pname,params);
        }
#line 1242 "pogl_gl_Vert_Multi.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glIsFramebufferEXT); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glIsFramebufferEXT)
{
    dVAR; dXSARGS;
    if (items != 1)
       croak_xs_usage(cv,  "framebuffer");
    {
	GLuint	framebuffer = (unsigned int)SvUV(ST(0))
;
	GLboolean	RETVAL;
#line 613 "pogl_gl_Vert_Multi.xs"
		loadProc(glIsFramebufferEXT,"glIsFramebufferEXT");
#line 1260 "pogl_gl_Vert_Multi.c"
#line 615 "pogl_gl_Vert_Multi.xs"
	{
		RETVAL = glIsFramebufferEXT(framebuffer);
        }
#line 1265 "pogl_gl_Vert_Multi.c"
	ST(0) = boolSV(RETVAL);
    }
    XSRETURN(1);
}


XS_EUPXS(XS_OpenGL_glBindFramebufferEXT); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glBindFramebufferEXT)
{
    dVAR; dXSARGS;
    if (items != 2)
       croak_xs_usage(cv,  "target, framebuffer");
    {
	GLenum	target = (int)SvIV(ST(0))
;
	GLuint	framebuffer = (unsigned int)SvUV(ST(1))
;
#line 627 "pogl_gl_Vert_Multi.xs"
		loadProc(glBindFramebufferEXT,"glBindFramebufferEXT");
#line 1285 "pogl_gl_Vert_Multi.c"
#line 629 "pogl_gl_Vert_Multi.xs"
	{
		glBindFramebufferEXT(target,framebuffer);
        }
#line 1290 "pogl_gl_Vert_Multi.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glDeleteFramebuffersEXT_c); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glDeleteFramebuffersEXT_c)
{
    dVAR; dXSARGS;
    if (items != 2)
       croak_xs_usage(cv,  "n, framebuffers");
    {
	GLsizei	n = (int)SvIV(ST(0))
;
	void *	framebuffers = INT2PTR(void *,SvIV(ST(1)))
;
#line 639 "pogl_gl_Vert_Multi.xs"
		loadProc(glDeleteFramebuffersEXT,"glDeleteFramebuffersEXT");
#line 1309 "pogl_gl_Vert_Multi.c"
#line 641 "pogl_gl_Vert_Multi.xs"
	{
		glDeleteFramebuffersEXT(n,framebuffers);
	}
#line 1314 "pogl_gl_Vert_Multi.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glDeleteFramebuffersEXT_s); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glDeleteFramebuffersEXT_s)
{
    dVAR; dXSARGS;
    if (items != 2)
       croak_xs_usage(cv,  "n, framebuffers");
    {
	GLsizei	n = (int)SvIV(ST(0))
;
	SV *	framebuffers = ST(1)
;
#line 651 "pogl_gl_Vert_Multi.xs"
		loadProc(glDeleteFramebuffersEXT,"glDeleteFramebuffersEXT");
#line 1333 "pogl_gl_Vert_Multi.c"
#line 653 "pogl_gl_Vert_Multi.xs"
	{
		void * framebuffers_s = EL(framebuffers, sizeof(GLuint)*n);
		glDeleteFramebuffersEXT(n,framebuffers_s);
	}
#line 1339 "pogl_gl_Vert_Multi.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glDeleteFramebuffersEXT_p); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glDeleteFramebuffersEXT_p)
{
    dVAR; dXSARGS;
    PERL_UNUSED_VAR(cv); /* -W */
    {
#line 662 "pogl_gl_Vert_Multi.xs"
		loadProc(glDeleteFramebuffersEXT,"glDeleteFramebuffersEXT");
#line 1353 "pogl_gl_Vert_Multi.c"
#line 664 "pogl_gl_Vert_Multi.xs"
	{
		if (items) {
			GLuint * list = malloc(sizeof(GLuint) * items);
			int i;

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

			glDeleteFramebuffersEXT(items, list);
			free(list);
		}
	}
#line 1367 "pogl_gl_Vert_Multi.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glGenFramebuffersEXT_c); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glGenFramebuffersEXT_c)
{
    dVAR; dXSARGS;
    if (items != 2)
       croak_xs_usage(cv,  "n, framebuffers");
    {
	GLsizei	n = (int)SvIV(ST(0))
;
	void *	framebuffers = INT2PTR(void *,SvIV(ST(1)))
;
#line 683 "pogl_gl_Vert_Multi.xs"
		loadProc(glGenFramebuffersEXT,"glGenFramebuffersEXT");
#line 1386 "pogl_gl_Vert_Multi.c"
#line 685 "pogl_gl_Vert_Multi.xs"
	{
		glGenFramebuffersEXT(n,framebuffers);
	}
#line 1391 "pogl_gl_Vert_Multi.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glGenFramebuffersEXT_s); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glGenFramebuffersEXT_s)
{
    dVAR; dXSARGS;
    if (items != 2)
       croak_xs_usage(cv,  "n, framebuffers");
    {
	GLsizei	n = (int)SvIV(ST(0))
;
	SV *	framebuffers = ST(1)
;
#line 695 "pogl_gl_Vert_Multi.xs"
		loadProc(glGenFramebuffersEXT,"glGenFramebuffersEXT");
#line 1410 "pogl_gl_Vert_Multi.c"
#line 697 "pogl_gl_Vert_Multi.xs"
	{
		void * framebuffers_s = EL(framebuffers, sizeof(GLuint)*n);
		glGenFramebuffersEXT(n,framebuffers_s);
	}
#line 1416 "pogl_gl_Vert_Multi.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glGenFramebuffersEXT_p); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glGenFramebuffersEXT_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 707 "pogl_gl_Vert_Multi.xs"
		loadProc(glGenFramebuffersEXT,"glGenFramebuffersEXT");
#line 1435 "pogl_gl_Vert_Multi.c"
#line 709 "pogl_gl_Vert_Multi.xs"
	if (n)
	{
		GLuint * framebuffers = malloc(sizeof(GLuint) * n);
		int i;

		glGenFramebuffersEXT(n, framebuffers);

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

		free(framebuffers);
	} 
#line 1450 "pogl_gl_Vert_Multi.c"
	PUTBACK;
	return;
    }
}


XS_EUPXS(XS_OpenGL_glCheckFramebufferStatusEXT); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glCheckFramebufferStatusEXT)
{
    dVAR; dXSARGS;
    if (items != 1)
       croak_xs_usage(cv,  "target");
    {
	GLenum	target = (int)SvIV(ST(0))
;
	GLenum	RETVAL;
	dXSTARG;
#line 728 "pogl_gl_Vert_Multi.xs"
		loadProc(glCheckFramebufferStatusEXT,"glCheckFramebufferStatusEXT");
#line 1470 "pogl_gl_Vert_Multi.c"
#line 730 "pogl_gl_Vert_Multi.xs"
	{
		RETVAL = glCheckFramebufferStatusEXT(target);
	}
#line 1475 "pogl_gl_Vert_Multi.c"
	XSprePUSH; PUSHi((IV)RETVAL);
    }
    XSRETURN(1);
}


XS_EUPXS(XS_OpenGL_glFramebufferTexture1DEXT); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glFramebufferTexture1DEXT)
{
    dVAR; dXSARGS;
    if (items != 5)
       croak_xs_usage(cv,  "target, attachment, textarget, texture, level");
    {
	GLenum	target = (int)SvIV(ST(0))
;
	GLenum	attachment = (int)SvIV(ST(1))
;
	GLenum	textarget = (int)SvIV(ST(2))
;
	GLuint	texture = (unsigned int)SvUV(ST(3))
;
	GLint	level = (int)SvIV(ST(4))
;
#line 745 "pogl_gl_Vert_Multi.xs"
		loadProc(glFramebufferTexture1DEXT,"glFramebufferTexture1DEXT");
#line 1501 "pogl_gl_Vert_Multi.c"
#line 747 "pogl_gl_Vert_Multi.xs"
	{
		glFramebufferTexture1DEXT(target,attachment,textarget,texture,level);
	}
#line 1506 "pogl_gl_Vert_Multi.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glFramebufferTexture2DEXT); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glFramebufferTexture2DEXT)
{
    dVAR; dXSARGS;
    if (items != 5)
       croak_xs_usage(cv,  "target, attachment, textarget, texture, level");
    {
	GLenum	target = (int)SvIV(ST(0))
;
	GLenum	attachment = (int)SvIV(ST(1))
;
	GLenum	textarget = (int)SvIV(ST(2))
;
	GLuint	texture = (unsigned int)SvUV(ST(3))
;
	GLint	level = (int)SvIV(ST(4))
;
#line 760 "pogl_gl_Vert_Multi.xs"
		loadProc(glFramebufferTexture2DEXT,"glFramebufferTexture2DEXT");
#line 1531 "pogl_gl_Vert_Multi.c"
#line 762 "pogl_gl_Vert_Multi.xs"
	{
		glFramebufferTexture2DEXT(target,attachment,textarget,texture,level);
	}
#line 1536 "pogl_gl_Vert_Multi.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glFramebufferTexture3DEXT); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glFramebufferTexture3DEXT)
{
    dVAR; dXSARGS;
    if (items != 6)
       croak_xs_usage(cv,  "target, attachment, textarget, texture, level, zoffset");
    {
	GLenum	target = (int)SvIV(ST(0))
;
	GLenum	attachment = (int)SvIV(ST(1))
;
	GLenum	textarget = (int)SvIV(ST(2))
;
	GLuint	texture = (unsigned int)SvUV(ST(3))
;
	GLint	level = (int)SvIV(ST(4))
;
	GLint	zoffset = (int)SvIV(ST(5))
;
#line 776 "pogl_gl_Vert_Multi.xs"
		loadProc(glFramebufferTexture3DEXT,"glFramebufferTexture3DEXT");
#line 1563 "pogl_gl_Vert_Multi.c"
#line 778 "pogl_gl_Vert_Multi.xs"
	{
		glFramebufferTexture3DEXT(target,attachment,textarget,texture,level,zoffset);
	}
#line 1568 "pogl_gl_Vert_Multi.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glFramebufferRenderbufferEXT); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glFramebufferRenderbufferEXT)
{
    dVAR; dXSARGS;
    if (items != 4)
       croak_xs_usage(cv,  "target, attachment, renderbuffertarget, renderbuffer");
    {
	GLenum	target = (int)SvIV(ST(0))
;
	GLenum	attachment = (int)SvIV(ST(1))
;
	GLenum	renderbuffertarget = (int)SvIV(ST(2))
;
	GLuint	renderbuffer = (unsigned int)SvUV(ST(3))
;
#line 790 "pogl_gl_Vert_Multi.xs"
		loadProc(glFramebufferRenderbufferEXT,"glFramebufferRenderbufferEXT");
#line 1591 "pogl_gl_Vert_Multi.c"
#line 792 "pogl_gl_Vert_Multi.xs"
	{
		glFramebufferRenderbufferEXT(target,attachment,renderbuffertarget,renderbuffer);
	}
#line 1596 "pogl_gl_Vert_Multi.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glGetFramebufferAttachmentParameterivEXT_s); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glGetFramebufferAttachmentParameterivEXT_s)
{
    dVAR; dXSARGS;
    if (items != 4)
       croak_xs_usage(cv,  "target, attachment, pname, params");
    {
	GLenum	target = (int)SvIV(ST(0))
;
	GLenum	attachment = (int)SvIV(ST(1))
;
	GLenum	pname = (int)SvIV(ST(2))
;
	SV *	params = ST(3)
;
#line 804 "pogl_gl_Vert_Multi.xs"
		loadProc(glGetFramebufferAttachmentParameterivEXT,"glGetFramebufferAttachmentParameterivEXT");
#line 1619 "pogl_gl_Vert_Multi.c"
#line 806 "pogl_gl_Vert_Multi.xs"
	{
		GLint * params_s = EL(params, sizeof(GLint));
		glGetFramebufferAttachmentParameterivEXT(target,attachment,pname,params_s);
        }
#line 1625 "pogl_gl_Vert_Multi.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glGetFramebufferAttachmentParameterivEXT_c); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glGetFramebufferAttachmentParameterivEXT_c)
{
    dVAR; dXSARGS;
    if (items != 4)
       croak_xs_usage(cv,  "target, attachment, pname, params");
    {
	GLenum	target = (int)SvIV(ST(0))
;
	GLenum	attachment = (int)SvIV(ST(1))
;
	GLenum	pname = (int)SvIV(ST(2))
;
	void *	params = INT2PTR(void *,SvIV(ST(3)))
;
#line 819 "pogl_gl_Vert_Multi.xs"
		loadProc(glGetFramebufferAttachmentParameterivEXT,"glGetFramebufferAttachmentParameterivEXT");
#line 1648 "pogl_gl_Vert_Multi.c"
#line 821 "pogl_gl_Vert_Multi.xs"
	{
		glGetFramebufferAttachmentParameterivEXT(target,attachment,pname,params);
        }
#line 1653 "pogl_gl_Vert_Multi.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glGenerateMipmapEXT); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glGenerateMipmapEXT)
{
    dVAR; dXSARGS;
    if (items != 1)
       croak_xs_usage(cv,  "target");
    {
	GLenum	target = (int)SvIV(ST(0))
;
#line 830 "pogl_gl_Vert_Multi.xs"
		loadProc(glGenerateMipmapEXT,"glGenerateMipmapEXT");
#line 1670 "pogl_gl_Vert_Multi.c"
#line 832 "pogl_gl_Vert_Multi.xs"
	{
		glGenerateMipmapEXT(target);
        }
#line 1675 "pogl_gl_Vert_Multi.c"
    }
    XSRETURN_EMPTY;
}

#endif
#ifdef GL_ARB_vertex_buffer_object
#define XSubPPtmpAAAE 1


XS_EUPXS(XS_OpenGL_glBindBufferARB); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glBindBufferARB)
{
    dVAR; dXSARGS;
    if (items != 2)
       croak_xs_usage(cv,  "target, buffer");
    {
	GLenum	target = (int)SvIV(ST(0))
;
	GLuint	buffer = (unsigned int)SvUV(ST(1))
;
#line 847 "pogl_gl_Vert_Multi.xs"
		loadProc(glBindBufferARB,"glBindBufferARB");
#line 1698 "pogl_gl_Vert_Multi.c"
#line 849 "pogl_gl_Vert_Multi.xs"
	{
		glBindBufferARB(target,buffer);
	}
#line 1703 "pogl_gl_Vert_Multi.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glDeleteBuffersARB_c); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glDeleteBuffersARB_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 859 "pogl_gl_Vert_Multi.xs"
		loadProc(glDeleteBuffersARB,"glDeleteBuffersARB");
#line 1722 "pogl_gl_Vert_Multi.c"
#line 861 "pogl_gl_Vert_Multi.xs"
	{
		glDeleteBuffersARB(n,buffers);
	}
#line 1727 "pogl_gl_Vert_Multi.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glDeleteBuffersARB_s); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glDeleteBuffersARB_s)
{
    dVAR; dXSARGS;
    if (items != 2)
       croak_xs_usage(cv,  "n, buffers");
    {
	GLsizei	n = (int)SvIV(ST(0))
;
	SV *	buffers = ST(1)
;
#line 871 "pogl_gl_Vert_Multi.xs"
		loadProc(glDeleteBuffersARB,"glDeleteBuffersARB");
#line 1746 "pogl_gl_Vert_Multi.c"
#line 873 "pogl_gl_Vert_Multi.xs"
	{
		void * buffers_s = EL(buffers, sizeof(GLuint)*n);
		glDeleteBuffersARB(n,buffers_s);
	}
#line 1752 "pogl_gl_Vert_Multi.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glDeleteBuffersARB_p); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glDeleteBuffersARB_p)
{
    dVAR; dXSARGS;
    PERL_UNUSED_VAR(cv); /* -W */
    {
#line 882 "pogl_gl_Vert_Multi.xs"
		loadProc(glDeleteBuffersARB,"glDeleteBuffersARB");
#line 1766 "pogl_gl_Vert_Multi.c"
#line 884 "pogl_gl_Vert_Multi.xs"
	{
		if (items) {
			GLuint * list = malloc(sizeof(GLuint) * items);
			int i;

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

			glDeleteBuffersARB(items, list);
			free(list);
		}
	}
#line 1780 "pogl_gl_Vert_Multi.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glGenBuffersARB_c); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glGenBuffersARB_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 903 "pogl_gl_Vert_Multi.xs"
		loadProc(glGenBuffersARB,"glGenBuffersARB");
#line 1799 "pogl_gl_Vert_Multi.c"
#line 905 "pogl_gl_Vert_Multi.xs"
	{
		glGenBuffersARB(n, buffers);
	}
#line 1804 "pogl_gl_Vert_Multi.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glGenBuffersARB_s); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glGenBuffersARB_s)
{
    dVAR; dXSARGS;
    if (items != 2)
       croak_xs_usage(cv,  "n, buffers");
    {
	GLsizei	n = (int)SvIV(ST(0))
;
	SV *	buffers = ST(1)
;
#line 915 "pogl_gl_Vert_Multi.xs"
		loadProc(glGenBuffersARB,"glGenBuffersARB");
#line 1823 "pogl_gl_Vert_Multi.c"
#line 917 "pogl_gl_Vert_Multi.xs"
	{
		void * buffers_s = EL(buffers, sizeof(GLuint)*n);
		glGenBuffersARB(n, buffers_s);
	}
#line 1829 "pogl_gl_Vert_Multi.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glGenBuffersARB_p); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glGenBuffersARB_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 927 "pogl_gl_Vert_Multi.xs"
		loadProc(glGenBuffersARB,"glGenBuffersARB");
#line 1848 "pogl_gl_Vert_Multi.c"
#line 929 "pogl_gl_Vert_Multi.xs"
	if (n)
	{
		GLuint * buffers = malloc(sizeof(GLuint) * n);
		int i;

		glGenBuffersARB(n, buffers);

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

		free(buffers);
	} 
#line 1863 "pogl_gl_Vert_Multi.c"
	PUTBACK;
	return;
    }
}


XS_EUPXS(XS_OpenGL_glIsBufferARB); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glIsBufferARB)
{
    dVAR; dXSARGS;
    if (items != 1)
       croak_xs_usage(cv,  "buffer");
    {
	GLuint	buffer = (unsigned int)SvUV(ST(0))
;
	GLboolean	RETVAL;
#line 948 "pogl_gl_Vert_Multi.xs"
		loadProc(glIsBufferARB,"glIsBufferARB");
#line 1882 "pogl_gl_Vert_Multi.c"
#line 950 "pogl_gl_Vert_Multi.xs"
	{
		RETVAL = glIsBufferARB(buffer);
        }
#line 1887 "pogl_gl_Vert_Multi.c"
	ST(0) = boolSV(RETVAL);
    }
    XSRETURN(1);
}


XS_EUPXS(XS_OpenGL_glBufferDataARB_c); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glBufferDataARB_c)
{
    dVAR; dXSARGS;
    if (items != 4)
       croak_xs_usage(cv,  "target, size, data, usage");
    {
	GLenum	target = (int)SvIV(ST(0))
;
	GLsizei	size = (int)SvIV(ST(1))
;
	void *	data = INT2PTR(void *,SvIV(ST(2)))
;
	GLenum	usage = (int)SvIV(ST(3))
;
#line 964 "pogl_gl_Vert_Multi.xs"
		loadProc(glBufferDataARB,"glBufferDataARB");
#line 1911 "pogl_gl_Vert_Multi.c"
#line 966 "pogl_gl_Vert_Multi.xs"
	{
		glBufferDataARB(target,size,data,usage);
	}
#line 1916 "pogl_gl_Vert_Multi.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glBufferDataARB_s); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glBufferDataARB_s)
{
    dVAR; dXSARGS;
    if (items != 4)
       croak_xs_usage(cv,  "target, size, data, usage");
    {
	GLenum	target = (int)SvIV(ST(0))
;
	GLsizei	size = (int)SvIV(ST(1))
;
	SV *	data = ST(2)
;
	GLenum	usage = (int)SvIV(ST(3))
;
#line 978 "pogl_gl_Vert_Multi.xs"
		loadProc(glBufferDataARB,"glBufferDataARB");
#line 1939 "pogl_gl_Vert_Multi.c"
#line 980 "pogl_gl_Vert_Multi.xs"
	{
		void * data_s = EL(data, size);
		glBufferDataARB(target,size,data_s,usage);
	}
#line 1945 "pogl_gl_Vert_Multi.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glBufferDataARB_p); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glBufferDataARB_p)
{
    dVAR; dXSARGS;
    if (items != 3)
       croak_xs_usage(cv,  "target, oga, usage");
    {
	GLenum	target = (int)SvIV(ST(0))
;
	OpenGL__Array	oga;
	GLenum	usage = (int)SvIV(ST(2))
;

	if (SvROK(ST(1)) && sv_derived_from(ST(1), "OpenGL::Array")) {
	    IV tmp = SvIV((SV*)SvRV(ST(1)));
	    oga = INT2PTR(OpenGL__Array,tmp);
	}
	else
	    Perl_croak_nocontext("%s: %s is not of type %s",
			"OpenGL::glBufferDataARB_p",
			"oga", "OpenGL::Array")
;
#line 992 "pogl_gl_Vert_Multi.xs"
		loadProc(glBufferDataARB,"glBufferDataARB");
#line 1975 "pogl_gl_Vert_Multi.c"
#line 994 "pogl_gl_Vert_Multi.xs"
	{
		glBufferDataARB(target,oga->data_length,oga->data,usage);
	}
#line 1980 "pogl_gl_Vert_Multi.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glBufferSubDataARB_c); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glBufferSubDataARB_c)
{
    dVAR; dXSARGS;
    if (items != 4)
       croak_xs_usage(cv,  "target, offset, size, data");
    {
	GLenum	target = (int)SvIV(ST(0))
;
	GLint	offset = (int)SvIV(ST(1))
;
	GLsizei	size = (int)SvIV(ST(2))
;
	void *	data = INT2PTR(void *,SvIV(ST(3)))
;
#line 1006 "pogl_gl_Vert_Multi.xs"
		loadProc(glBufferSubDataARB,"glBufferSubDataARB");
#line 2003 "pogl_gl_Vert_Multi.c"
#line 1008 "pogl_gl_Vert_Multi.xs"
	{
		glBufferSubDataARB(target,offset,size,data);
	}
#line 2008 "pogl_gl_Vert_Multi.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glBufferSubDataARB_s); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glBufferSubDataARB_s)
{
    dVAR; dXSARGS;
    if (items != 4)
       croak_xs_usage(cv,  "target, offset, size, data");
    {
	GLenum	target = (int)SvIV(ST(0))
;
	GLint	offset = (int)SvIV(ST(1))
;
	GLsizei	size = (int)SvIV(ST(2))
;
	SV *	data = ST(3)
;
#line 1020 "pogl_gl_Vert_Multi.xs"
		loadProc(glBufferSubDataARB,"glBufferSubDataARB");
#line 2031 "pogl_gl_Vert_Multi.c"
#line 1022 "pogl_gl_Vert_Multi.xs"
	{
		void * data_s = EL(data, size);
		glBufferSubDataARB(target,offset,size,data);
	}
#line 2037 "pogl_gl_Vert_Multi.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glBufferSubDataARB_p); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glBufferSubDataARB_p)
{
    dVAR; dXSARGS;
    if (items != 3)
       croak_xs_usage(cv,  "target, offset, oga");
    {
	GLenum	target = (int)SvIV(ST(0))
;
	GLint	offset = (int)SvIV(ST(1))
;
	OpenGL__Array	oga;

	if (SvROK(ST(2)) && sv_derived_from(ST(2), "OpenGL::Array")) {
	    IV tmp = SvIV((SV*)SvRV(ST(2)));
	    oga = INT2PTR(OpenGL__Array,tmp);
	}
	else
	    Perl_croak_nocontext("%s: %s is not of type %s",
			"OpenGL::glBufferSubDataARB_p",
			"oga", "OpenGL::Array")
;
#line 1034 "pogl_gl_Vert_Multi.xs"
		loadProc(glBufferSubDataARB,"glBufferSubDataARB");
#line 2067 "pogl_gl_Vert_Multi.c"
#line 1036 "pogl_gl_Vert_Multi.xs"
	{
		glBufferSubDataARB(target,offset*oga->total_types_width,oga->data_length,oga->data);
	}
#line 2072 "pogl_gl_Vert_Multi.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glGetBufferSubDataARB_c); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glGetBufferSubDataARB_c)
{
    dVAR; dXSARGS;
    if (items != 4)
       croak_xs_usage(cv,  "target, offset, size, data");
    {
	GLenum	target = (int)SvIV(ST(0))
;
	GLint	offset = (int)SvIV(ST(1))
;
	GLsizei	size = (int)SvIV(ST(2))
;
	void *	data = INT2PTR(void *,SvIV(ST(3)))
;
#line 1048 "pogl_gl_Vert_Multi.xs"
		loadProc(glGetBufferSubDataARB,"glBufferSubDataARB");
#line 2095 "pogl_gl_Vert_Multi.c"
#line 1050 "pogl_gl_Vert_Multi.xs"
		glGetBufferSubDataARB(target,offset,size,data);
#line 2098 "pogl_gl_Vert_Multi.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glGetBufferSubDataARB_s); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glGetBufferSubDataARB_s)
{
    dVAR; dXSARGS;
    if (items != 4)
       croak_xs_usage(cv,  "target, offset, size, data");
    {
	GLenum	target = (int)SvIV(ST(0))
;
	GLint	offset = (int)SvIV(ST(1))
;
	GLsizei	size = (int)SvIV(ST(2))
;
	SV *	data = ST(3)
;
#line 1060 "pogl_gl_Vert_Multi.xs"
		loadProc(glGetBufferSubDataARB,"glBufferSubDataARB");
#line 2121 "pogl_gl_Vert_Multi.c"
#line 1062 "pogl_gl_Vert_Multi.xs"
	{
		GLubyte * data_s = EL(data,size);
		glGetBufferSubDataARB(target,offset,size,data_s);
	}
#line 2127 "pogl_gl_Vert_Multi.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glGetBufferSubDataARB_p); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glGetBufferSubDataARB_p)
{
    dVAR; dXSARGS;
    if (items < 3)
       croak_xs_usage(cv,  "target, offset, count, ...");
    {
	GLenum	target = (int)SvIV(ST(0))
;
	GLint	offset = (int)SvIV(ST(1))
;
	GLsizei	count = (int)SvIV(ST(2))
;
	OpenGL__Array	RETVAL;
#line 1075 "pogl_gl_Vert_Multi.xs"
		loadProc(glGetBufferSubDataARB,"glGetBufferSubDataARB");
		loadProc(glGetBufferParameterivARB,"glGetBufferParameterivARB");
#line 2150 "pogl_gl_Vert_Multi.c"
#line 1078 "pogl_gl_Vert_Multi.xs"
	{
		oga_struct * oga = malloc(sizeof(oga_struct));
		GLsizeiptrARB size;

		oga->item_count = count;
		oga->type_count = (items - 3);

                if (oga->type_count)
		{
			int i,j;

			oga->types = malloc(sizeof(GLenum) * oga->type_count);
			oga->type_offset = malloc(sizeof(GLint) * oga->type_count);
			for(i=0,j=0;i<oga->type_count;i++) {
				oga->types[i] = SvIV(ST(i+3));
				oga->type_offset[i] = j;
				j += gl_type_size(oga->types[i]);
			}
			oga->total_types_width = j;
		}
		else
		{
			oga->type_count = 1;
			oga->types = malloc(sizeof(GLenum) * oga->type_count);
			oga->type_offset = malloc(sizeof(GLint) * oga->type_count);

			oga->types[0] = GL_UNSIGNED_BYTE;
			oga->type_offset[0] = 0;
			oga->total_types_width = gl_type_size(oga->types[0]);
		}
		if (!oga->total_types_width) croak("Unable to determine type sizes\n");

		glGetBufferParameterivARB(target,GL_BUFFER_SIZE_ARB,(GLint*)&size);
		size /= oga->total_types_width;
		if (offset > size) croak("Offset is greater than elements in buffer: %d\n",size);

		if ((offset+count) > size) count = size - offset;

		oga->data_length = oga->total_types_width * count;
		oga->data = malloc(oga->data_length);

		glGetBufferSubDataARB(target,offset*oga->total_types_width,
			oga->data_length,oga->data);

		oga->free_data = 1;

		RETVAL = oga;
	}
#line 2200 "pogl_gl_Vert_Multi.c"
	ST(0) = sv_newmortal();
	sv_setref_pv(ST(0), "OpenGL::Array", (void*)RETVAL);
    }
    XSRETURN(1);
}


XS_EUPXS(XS_OpenGL_glMapBufferARB_c); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glMapBufferARB_c)
{
    dVAR; dXSARGS;
    if (items != 2)
       croak_xs_usage(cv,  "target, access");
    {
	GLenum	target = (int)SvIV(ST(0))
;
	GLenum	access = (int)SvIV(ST(1))
;
	void *	RETVAL;
	dXSTARG;
#line 1135 "pogl_gl_Vert_Multi.xs"
		loadProc(glMapBufferARB,"glMapBufferARB");
#line 2223 "pogl_gl_Vert_Multi.c"
#line 1137 "pogl_gl_Vert_Multi.xs"
		RETVAL = glMapBufferARB(target,access);
#line 2226 "pogl_gl_Vert_Multi.c"
	XSprePUSH; PUSHi(PTR2IV(RETVAL));
    }
    XSRETURN(1);
}

#define FIXME /* !!! Need to refactor with glGetBufferPointervARB_p */

XS_EUPXS(XS_OpenGL_glMapBufferARB_p); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glMapBufferARB_p)
{
    dVAR; dXSARGS;
    if (items < 2)
       croak_xs_usage(cv,  "target, access, ...");
    {
	GLenum	target = (int)SvIV(ST(0))
;
	GLenum	access = (int)SvIV(ST(1))
;
	OpenGL__Array	RETVAL;
#line 1150 "pogl_gl_Vert_Multi.xs"
		loadProc(glMapBufferARB,"glMapBufferARB");
		loadProc(glGetBufferParameterivARB,"glGetBufferParameterivARB");
#line 2249 "pogl_gl_Vert_Multi.c"
#line 1153 "pogl_gl_Vert_Multi.xs"
	{
		GLsizeiptrARB size;
		oga_struct * oga;
		int i,j;

		void * buffer =	glMapBufferARB(target,access);
		if (!buffer) croak("Unable to map buffer\n");

		glGetBufferParameterivARB(target,GL_BUFFER_SIZE_ARB,(GLint*)&size);
		if (!size) croak("Buffer has no size\n");

		oga = malloc(sizeof(oga_struct));

		oga->type_count = (items - 2);

                if (oga->type_count)
		{
			oga->types = malloc(sizeof(GLenum) * oga->type_count);
			oga->type_offset = malloc(sizeof(GLint) * oga->type_count);
			for(i=0,j=0;i<oga->type_count;i++) {
				oga->types[i] = SvIV(ST(i+2));
				oga->type_offset[i] = j;
				j += gl_type_size(oga->types[i]);
			}
			oga->total_types_width = j;
		}
		else
		{
			oga->type_count = 1;
			oga->types = malloc(sizeof(GLenum) * oga->type_count);
			oga->type_offset = malloc(sizeof(GLint) * oga->type_count);

			oga->types[0] = GL_UNSIGNED_BYTE;
			oga->type_offset[0] = 0;
			oga->total_types_width = gl_type_size(oga->types[0]);
		}

		if (!oga->total_types_width) croak("Unable to determine type sizes\n");
		oga->item_count = size / oga->total_types_width;

		oga->data_length = oga->total_types_width * oga->item_count;

		oga->data = buffer;

		oga->free_data = 0;

		RETVAL = oga;
	}
#line 2299 "pogl_gl_Vert_Multi.c"
	ST(0) = sv_newmortal();
	sv_setref_pv(ST(0), "OpenGL::Array", (void*)RETVAL);
    }
    XSRETURN(1);
}


XS_EUPXS(XS_OpenGL_glUnmapBufferARB); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glUnmapBufferARB)
{
    dVAR; dXSARGS;
    if (items != 1)
       croak_xs_usage(cv,  "target");
    {
	GLenum	target = (int)SvIV(ST(0))
;
	GLboolean	RETVAL;
#line 1209 "pogl_gl_Vert_Multi.xs"
		loadProc(glUnmapBufferARB,"glUnmapBufferARB");
#line 2319 "pogl_gl_Vert_Multi.c"
#line 1211 "pogl_gl_Vert_Multi.xs"
		RETVAL = glUnmapBufferARB(target);
#line 2322 "pogl_gl_Vert_Multi.c"
	ST(0) = boolSV(RETVAL);
    }
    XSRETURN(1);
}


XS_EUPXS(XS_OpenGL_glGetBufferParameterivARB_c); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glGetBufferParameterivARB_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 1222 "pogl_gl_Vert_Multi.xs"
		loadProc(glGetBufferParameterivARB,"glGetBufferParameterivARB");
#line 2344 "pogl_gl_Vert_Multi.c"
#line 1224 "pogl_gl_Vert_Multi.xs"
		glGetBufferParameterivARB(target,pname,params);
#line 2347 "pogl_gl_Vert_Multi.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glGetBufferParameterivARB_s); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glGetBufferParameterivARB_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 1233 "pogl_gl_Vert_Multi.xs"
		loadProc(glGetBufferParameterivARB,"glGetBufferParameterivARB");
#line 2368 "pogl_gl_Vert_Multi.c"
#line 1235 "pogl_gl_Vert_Multi.xs"
	{
		GLint * params_s = EL(params, sizeof(GLint)*1);
		glGetBufferParameterivARB(target,pname,params_s);
	}
#line 2374 "pogl_gl_Vert_Multi.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glGetBufferParameterivARB_p); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glGetBufferParameterivARB_p)
{
    dVAR; dXSARGS;
    if (items != 2)
       croak_xs_usage(cv,  "target, pname");
    PERL_UNUSED_VAR(ax); /* -Wall */
    SP -= items;
    {
	GLenum	target = (int)SvIV(ST(0))
;
	GLenum	pname = (int)SvIV(ST(1))
;
#line 1246 "pogl_gl_Vert_Multi.xs"
		loadProc(glGetBufferParameterivARB,"glGetBufferParameterivARB");
#line 2395 "pogl_gl_Vert_Multi.c"
#line 1248 "pogl_gl_Vert_Multi.xs"
	{
		GLint	ret;
		glGetBufferParameterivARB(target,pname,&ret);
		PUSHs(sv_2mortal(newSViv(ret)));
	}
#line 2402 "pogl_gl_Vert_Multi.c"
	PUTBACK;
	return;
    }
}


XS_EUPXS(XS_OpenGL_glGetBufferPointervARB_c); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glGetBufferPointervARB_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 1261 "pogl_gl_Vert_Multi.xs"
		loadProc(glGetBufferPointervARB,"glGetBufferPointervARB");
#line 2424 "pogl_gl_Vert_Multi.c"
#line 1263 "pogl_gl_Vert_Multi.xs"
		glGetBufferPointervARB(target,pname,&params);
#line 2427 "pogl_gl_Vert_Multi.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glGetBufferPointervARB_s); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glGetBufferPointervARB_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 1272 "pogl_gl_Vert_Multi.xs"
		loadProc(glGetBufferPointervARB,"glGetBufferPointervARB");
#line 2448 "pogl_gl_Vert_Multi.c"
#line 1274 "pogl_gl_Vert_Multi.xs"
	{
		void ** params_s = EL(params, sizeof(void*));
		glGetBufferPointervARB(target,pname,params_s);
	}
#line 2454 "pogl_gl_Vert_Multi.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glGetBufferPointervARB_p); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glGetBufferPointervARB_p)
{
    dVAR; dXSARGS;
    if (items < 2)
       croak_xs_usage(cv,  "target, pname, ...");
    {
	GLenum	target = (int)SvIV(ST(0))
;
	GLenum	pname = (int)SvIV(ST(1))
;
	OpenGL__Array	RETVAL;
#line 1286 "pogl_gl_Vert_Multi.xs"
		loadProc(glGetBufferPointervARB,"glGetBufferPointervARB");
		loadProc(glGetBufferParameterivARB,"glGetBufferParameterivARB");
#line 2475 "pogl_gl_Vert_Multi.c"
#line 1289 "pogl_gl_Vert_Multi.xs"
	{
		GLsizeiptrARB size;
		oga_struct * oga;
		void * buffer;
		int i,j;

		glGetBufferPointervARB(target,pname,&buffer);
		if (!buffer) croak("Buffer is not mapped\n");

		glGetBufferParameterivARB(target,GL_BUFFER_SIZE_ARB,(GLint*)&size);
		if (!size) croak("Buffer has no size\n");

		oga = malloc(sizeof(oga_struct));

		oga->type_count = (items - 2);

                if (oga->type_count)
		{
			oga->types = malloc(sizeof(GLenum) * oga->type_count);
			oga->type_offset = malloc(sizeof(GLint) * oga->type_count);
			for(i=0,j=0;i<oga->type_count;i++) {
				oga->types[i] = SvIV(ST(i+2));
				oga->type_offset[i] = j;
				j += gl_type_size(oga->types[i]);
			}
			oga->total_types_width = j;
		}
		else
		{
			oga->type_count = 1;
			oga->types = malloc(sizeof(GLenum) * oga->type_count);
			oga->type_offset = malloc(sizeof(GLint) * oga->type_count);

			oga->types[0] = GL_UNSIGNED_BYTE;
			oga->type_offset[0] = 0;
			oga->total_types_width = gl_type_size(oga->types[0]);
		}

		if (!oga->total_types_width) croak("Unable to determine type sizes\n");
		oga->item_count = size / oga->total_types_width;

		oga->data_length = oga->total_types_width * oga->item_count;

		oga->data = buffer;

		oga->free_data = 0;

		RETVAL = oga;
	}
#line 2526 "pogl_gl_Vert_Multi.c"
	ST(0) = sv_newmortal();
	sv_setref_pv(ST(0), "OpenGL::Array", (void*)RETVAL);
    }
    XSRETURN(1);
}

#endif
#ifdef GL_ARB_multitexture
#define XSubPPtmpAAAF 1


XS_EUPXS(XS_OpenGL_glActiveTextureARB); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glActiveTextureARB)
{
    dVAR; dXSARGS;
    if (items != 1)
       croak_xs_usage(cv,  "texture");
    {
	GLenum	texture = (int)SvIV(ST(0))
;
#line 1352 "pogl_gl_Vert_Multi.xs"
		loadProc(glActiveTextureARB,"glActiveTextureARB");
#line 2549 "pogl_gl_Vert_Multi.c"
#line 1354 "pogl_gl_Vert_Multi.xs"
		glActiveTextureARB(texture);
#line 2552 "pogl_gl_Vert_Multi.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glClientActiveTextureARB); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glClientActiveTextureARB)
{
    dVAR; dXSARGS;
    if (items != 1)
       croak_xs_usage(cv,  "texture");
    {
	GLenum	texture = (int)SvIV(ST(0))
;
#line 1361 "pogl_gl_Vert_Multi.xs"
		loadProc(glClientActiveTextureARB,"glClientActiveTextureARB");
#line 2569 "pogl_gl_Vert_Multi.c"
#line 1363 "pogl_gl_Vert_Multi.xs"
		glClientActiveTextureARB(texture);
#line 2572 "pogl_gl_Vert_Multi.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glMultiTexCoord1dARB); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glMultiTexCoord1dARB)
{
    dVAR; dXSARGS;
    if (items != 2)
       croak_xs_usage(cv,  "target, s");
    {
	GLenum	target = (int)SvIV(ST(0))
;
	GLdouble	s = (double)SvNV(ST(1))
;
#line 1371 "pogl_gl_Vert_Multi.xs"
		loadProc(glMultiTexCoord1dARB,"glMultiTexCoord1dARB");
#line 2591 "pogl_gl_Vert_Multi.c"
#line 1373 "pogl_gl_Vert_Multi.xs"
		glMultiTexCoord1dARB(target,s);
#line 2594 "pogl_gl_Vert_Multi.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glMultiTexCoord1dvARB_c); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glMultiTexCoord1dvARB_c)
{
    dVAR; dXSARGS;
    if (items != 2)
       croak_xs_usage(cv,  "target, v");
    {
	GLenum	target = (int)SvIV(ST(0))
;
	void *	v = INT2PTR(void *,SvIV(ST(1)))
;
#line 1381 "pogl_gl_Vert_Multi.xs"
		loadProc(glMultiTexCoord1dvARB,"glMultiTexCoord1dvARB");
#line 2613 "pogl_gl_Vert_Multi.c"
#line 1383 "pogl_gl_Vert_Multi.xs"
		glMultiTexCoord1dvARB(target,v);
#line 2616 "pogl_gl_Vert_Multi.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glMultiTexCoord1dvARB_s); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glMultiTexCoord1dvARB_s)
{
    dVAR; dXSARGS;
    if (items != 2)
       croak_xs_usage(cv,  "target, v");
    {
	GLenum	target = (int)SvIV(ST(0))
;
	void *	v = INT2PTR(void *,SvIV(ST(1)))
;
#line 1391 "pogl_gl_Vert_Multi.xs"
		loadProc(glMultiTexCoord1dvARB,"glMultiTexCoord1dvARB");
#line 2635 "pogl_gl_Vert_Multi.c"
#line 1393 "pogl_gl_Vert_Multi.xs"
	{
		GLdouble * v_s = EL(v, sizeof(GLdouble));
		glMultiTexCoord1dvARB(target,v_s);
	}
#line 2641 "pogl_gl_Vert_Multi.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glMultiTexCoord1dvARB_p); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glMultiTexCoord1dvARB_p)
{
    dVAR; dXSARGS;
    if (items != 2)
       croak_xs_usage(cv,  "target, s");
    {
	GLenum	target = (int)SvIV(ST(0))
;
	GLdouble	s = (double)SvNV(ST(1))
;
#line 1405 "pogl_gl_Vert_Multi.xs"
		loadProc(glMultiTexCoord1dvARB,"glMultiTexCoord1dvARB");
#line 2660 "pogl_gl_Vert_Multi.c"
#line 1407 "pogl_gl_Vert_Multi.xs"
	{
		glMultiTexCoord1dvARB(target,&s);
	}
#line 2665 "pogl_gl_Vert_Multi.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glMultiTexCoord1fARB); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glMultiTexCoord1fARB)
{
    dVAR; dXSARGS;
    if (items != 2)
       croak_xs_usage(cv,  "target, s");
    {
	GLenum	target = (int)SvIV(ST(0))
;
	GLfloat	s = (float)SvNV(ST(1))
;
#line 1417 "pogl_gl_Vert_Multi.xs"
		loadProc(glMultiTexCoord1fARB,"glMultiTexCoord1fARB");
#line 2684 "pogl_gl_Vert_Multi.c"
#line 1419 "pogl_gl_Vert_Multi.xs"
		glMultiTexCoord1fARB(target,s);
#line 2687 "pogl_gl_Vert_Multi.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glMultiTexCoord1fvARB_c); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glMultiTexCoord1fvARB_c)
{
    dVAR; dXSARGS;
    if (items != 2)
       croak_xs_usage(cv,  "target, v");
    {
	GLenum	target = (int)SvIV(ST(0))
;
	void *	v = INT2PTR(void *,SvIV(ST(1)))
;
#line 1427 "pogl_gl_Vert_Multi.xs"
		loadProc(glMultiTexCoord1fvARB,"glMultiTexCoord1fvARB");
#line 2706 "pogl_gl_Vert_Multi.c"
#line 1429 "pogl_gl_Vert_Multi.xs"
		glMultiTexCoord1fvARB(target,v);
#line 2709 "pogl_gl_Vert_Multi.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glMultiTexCoord1fvARB_s); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glMultiTexCoord1fvARB_s)
{
    dVAR; dXSARGS;
    if (items != 2)
       croak_xs_usage(cv,  "target, v");
    {
	GLenum	target = (int)SvIV(ST(0))
;
	void *	v = INT2PTR(void *,SvIV(ST(1)))
;
#line 1437 "pogl_gl_Vert_Multi.xs"
		loadProc(glMultiTexCoord1fvARB,"glMultiTexCoord1fvARB");
#line 2728 "pogl_gl_Vert_Multi.c"
#line 1439 "pogl_gl_Vert_Multi.xs"
	{
		GLfloat * v_s = EL(v, sizeof(GLfloat));
		glMultiTexCoord1fvARB(target,v_s);
	}
#line 2734 "pogl_gl_Vert_Multi.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glMultiTexCoord1fvARB_p); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glMultiTexCoord1fvARB_p)
{
    dVAR; dXSARGS;
    if (items != 2)
       croak_xs_usage(cv,  "target, s");
    {
	GLenum	target = (int)SvIV(ST(0))
;
	GLfloat	s = (float)SvNV(ST(1))
;
#line 1451 "pogl_gl_Vert_Multi.xs"
		loadProc(glMultiTexCoord1fvARB,"glMultiTexCoord1fvARB");
#line 2753 "pogl_gl_Vert_Multi.c"
#line 1453 "pogl_gl_Vert_Multi.xs"
	{
		glMultiTexCoord1fvARB(target,&s);
	}
#line 2758 "pogl_gl_Vert_Multi.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glMultiTexCoord1iARB); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glMultiTexCoord1iARB)
{
    dVAR; dXSARGS;
    if (items != 2)
       croak_xs_usage(cv,  "target, s");
    {
	GLenum	target = (int)SvIV(ST(0))
;
	GLint	s = (int)SvIV(ST(1))
;
#line 1463 "pogl_gl_Vert_Multi.xs"
		loadProc(glMultiTexCoord1iARB,"glMultiTexCoord1iARB");
#line 2777 "pogl_gl_Vert_Multi.c"
#line 1465 "pogl_gl_Vert_Multi.xs"
		glMultiTexCoord1iARB(target,s);
#line 2780 "pogl_gl_Vert_Multi.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glMultiTexCoord1ivARB_c); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glMultiTexCoord1ivARB_c)
{
    dVAR; dXSARGS;
    if (items != 2)
       croak_xs_usage(cv,  "target, v");
    {
	GLenum	target = (int)SvIV(ST(0))
;
	void *	v = INT2PTR(void *,SvIV(ST(1)))
;
#line 1473 "pogl_gl_Vert_Multi.xs"
		loadProc(glMultiTexCoord1ivARB,"glMultiTexCoord1ivARB");
#line 2799 "pogl_gl_Vert_Multi.c"
#line 1475 "pogl_gl_Vert_Multi.xs"
		glMultiTexCoord1ivARB(target,v);
#line 2802 "pogl_gl_Vert_Multi.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glMultiTexCoord1ivARB_s); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glMultiTexCoord1ivARB_s)
{
    dVAR; dXSARGS;
    if (items != 2)
       croak_xs_usage(cv,  "target, v");
    {
	GLenum	target = (int)SvIV(ST(0))
;
	void *	v = INT2PTR(void *,SvIV(ST(1)))
;
#line 1483 "pogl_gl_Vert_Multi.xs"
		loadProc(glMultiTexCoord1ivARB,"glMultiTexCoord1ivARB");
#line 2821 "pogl_gl_Vert_Multi.c"
#line 1485 "pogl_gl_Vert_Multi.xs"
	{
		GLint * v_s = EL(v, sizeof(GLint));
		glMultiTexCoord1ivARB(target,v_s);
	}
#line 2827 "pogl_gl_Vert_Multi.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glMultiTexCoord1ivARB_p); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glMultiTexCoord1ivARB_p)
{
    dVAR; dXSARGS;
    if (items != 2)
       croak_xs_usage(cv,  "target, s");
    {
	GLenum	target = (int)SvIV(ST(0))
;
	GLint	s = (int)SvIV(ST(1))
;
#line 1497 "pogl_gl_Vert_Multi.xs"
		loadProc(glMultiTexCoord1ivARB,"glMultiTexCoord1ivARB");
#line 2846 "pogl_gl_Vert_Multi.c"
#line 1499 "pogl_gl_Vert_Multi.xs"
	{
		glMultiTexCoord1ivARB(target,&s);
	}
#line 2851 "pogl_gl_Vert_Multi.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glMultiTexCoord1sARB); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glMultiTexCoord1sARB)
{
    dVAR; dXSARGS;
    if (items != 2)
       croak_xs_usage(cv,  "target, s");
    {
	GLenum	target = (int)SvIV(ST(0))
;
	GLshort	s = (short)SvIV(ST(1))
;
#line 1509 "pogl_gl_Vert_Multi.xs"
		loadProc(glMultiTexCoord1sARB,"glMultiTexCoord1sARB");
#line 2870 "pogl_gl_Vert_Multi.c"
#line 1511 "pogl_gl_Vert_Multi.xs"
		glMultiTexCoord1sARB(target,s);
#line 2873 "pogl_gl_Vert_Multi.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glMultiTexCoord1svARB_c); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glMultiTexCoord1svARB_c)
{
    dVAR; dXSARGS;
    if (items != 2)
       croak_xs_usage(cv,  "target, v");
    {
	GLenum	target = (int)SvIV(ST(0))
;
	void *	v = INT2PTR(void *,SvIV(ST(1)))
;
#line 1519 "pogl_gl_Vert_Multi.xs"
		loadProc(glMultiTexCoord1svARB,"glMultiTexCoord1svARB");
#line 2892 "pogl_gl_Vert_Multi.c"
#line 1521 "pogl_gl_Vert_Multi.xs"
		glMultiTexCoord1svARB(target,v);
#line 2895 "pogl_gl_Vert_Multi.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glMultiTexCoord1svARB_s); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glMultiTexCoord1svARB_s)
{
    dVAR; dXSARGS;
    if (items != 2)
       croak_xs_usage(cv,  "target, v");
    {
	GLenum	target = (int)SvIV(ST(0))
;
	void *	v = INT2PTR(void *,SvIV(ST(1)))
;
#line 1529 "pogl_gl_Vert_Multi.xs"
		loadProc(glMultiTexCoord1svARB,"glMultiTexCoord1svARB");
#line 2914 "pogl_gl_Vert_Multi.c"
#line 1531 "pogl_gl_Vert_Multi.xs"
	{
		GLshort * v_s = EL(v, sizeof(GLshort));
		glMultiTexCoord1svARB(target,v_s);
	}
#line 2920 "pogl_gl_Vert_Multi.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glMultiTexCoord1svARB_p); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glMultiTexCoord1svARB_p)
{
    dVAR; dXSARGS;
    if (items != 2)
       croak_xs_usage(cv,  "target, s");
    {
	GLenum	target = (int)SvIV(ST(0))
;
	GLshort	s = (short)SvIV(ST(1))
;
#line 1543 "pogl_gl_Vert_Multi.xs"
		loadProc(glMultiTexCoord1svARB,"glMultiTexCoord1svARB");
#line 2939 "pogl_gl_Vert_Multi.c"
#line 1545 "pogl_gl_Vert_Multi.xs"
	{
		glMultiTexCoord1svARB(target,&s);
	}
#line 2944 "pogl_gl_Vert_Multi.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glMultiTexCoord2dARB); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glMultiTexCoord2dARB)
{
    dVAR; dXSARGS;
    if (items != 3)
       croak_xs_usage(cv,  "target, s, t");
    {
	GLenum	target = (int)SvIV(ST(0))
;
	GLdouble	s = (double)SvNV(ST(1))
;
	GLdouble	t = (double)SvNV(ST(2))
;
#line 1556 "pogl_gl_Vert_Multi.xs"
		loadProc(glMultiTexCoord2dARB,"glMultiTexCoord2dARB");
#line 2965 "pogl_gl_Vert_Multi.c"
#line 1558 "pogl_gl_Vert_Multi.xs"
		glMultiTexCoord2dARB(target,s,t);
#line 2968 "pogl_gl_Vert_Multi.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glMultiTexCoord2dvARB_c); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glMultiTexCoord2dvARB_c)
{
    dVAR; dXSARGS;
    if (items != 2)
       croak_xs_usage(cv,  "target, v");
    {
	GLenum	target = (int)SvIV(ST(0))
;
	void *	v = INT2PTR(void *,SvIV(ST(1)))
;
#line 1566 "pogl_gl_Vert_Multi.xs"
		loadProc(glMultiTexCoord2dvARB,"glMultiTexCoord2dvARB");
#line 2987 "pogl_gl_Vert_Multi.c"
#line 1568 "pogl_gl_Vert_Multi.xs"
		glMultiTexCoord2dvARB(target,v);
#line 2990 "pogl_gl_Vert_Multi.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glMultiTexCoord2dvARB_s); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glMultiTexCoord2dvARB_s)
{
    dVAR; dXSARGS;
    if (items != 2)
       croak_xs_usage(cv,  "target, v");
    {
	GLenum	target = (int)SvIV(ST(0))
;
	void *	v = INT2PTR(void *,SvIV(ST(1)))
;
#line 1576 "pogl_gl_Vert_Multi.xs"
		loadProc(glMultiTexCoord2dvARB,"glMultiTexCoord2dvARB");
#line 3009 "pogl_gl_Vert_Multi.c"
#line 1578 "pogl_gl_Vert_Multi.xs"
	{
		GLdouble * v_s = EL(v, sizeof(GLdouble));
		glMultiTexCoord2dvARB(target,v_s);
	}
#line 3015 "pogl_gl_Vert_Multi.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glMultiTexCoord2dvARB_p); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glMultiTexCoord2dvARB_p)
{
    dVAR; dXSARGS;
    if (items != 3)
       croak_xs_usage(cv,  "target, s, t");
    {
	GLenum	target = (int)SvIV(ST(0))
;
	GLdouble	s = (double)SvNV(ST(1))
;
	GLdouble	t = (double)SvNV(ST(2))
;
#line 1591 "pogl_gl_Vert_Multi.xs"
		loadProc(glMultiTexCoord2dvARB,"glMultiTexCoord2dvARB");
#line 3036 "pogl_gl_Vert_Multi.c"
#line 1593 "pogl_gl_Vert_Multi.xs"
	{
		GLdouble param[2];
		param[0] = s;
		param[1] = t;
		glMultiTexCoord2dvARB(target,param);
	}
#line 3044 "pogl_gl_Vert_Multi.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glMultiTexCoord2fARB); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glMultiTexCoord2fARB)
{
    dVAR; dXSARGS;
    if (items != 3)
       croak_xs_usage(cv,  "target, s, t");
    {
	GLenum	target = (int)SvIV(ST(0))
;
	GLfloat	s = (float)SvNV(ST(1))
;
	GLfloat	t = (float)SvNV(ST(2))
;
#line 1607 "pogl_gl_Vert_Multi.xs"
		loadProc(glMultiTexCoord2fARB,"glMultiTexCoord2fARB");
#line 3065 "pogl_gl_Vert_Multi.c"
#line 1609 "pogl_gl_Vert_Multi.xs"
		glMultiTexCoord2fARB(target,s,t);
#line 3068 "pogl_gl_Vert_Multi.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glMultiTexCoord2fvARB_c); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glMultiTexCoord2fvARB_c)
{
    dVAR; dXSARGS;
    if (items != 2)
       croak_xs_usage(cv,  "target, v");
    {
	GLenum	target = (int)SvIV(ST(0))
;
	void *	v = INT2PTR(void *,SvIV(ST(1)))
;
#line 1617 "pogl_gl_Vert_Multi.xs"
		loadProc(glMultiTexCoord2fvARB,"glMultiTexCoord2fvARB");
#line 3087 "pogl_gl_Vert_Multi.c"
#line 1619 "pogl_gl_Vert_Multi.xs"
		glMultiTexCoord2fvARB(target,v);
#line 3090 "pogl_gl_Vert_Multi.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glMultiTexCoord2fvARB_s); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glMultiTexCoord2fvARB_s)
{
    dVAR; dXSARGS;
    if (items != 2)
       croak_xs_usage(cv,  "target, v");
    {
	GLenum	target = (int)SvIV(ST(0))
;
	void *	v = INT2PTR(void *,SvIV(ST(1)))
;
#line 1627 "pogl_gl_Vert_Multi.xs"
		loadProc(glMultiTexCoord2fvARB,"glMultiTexCoord2fvARB");
#line 3109 "pogl_gl_Vert_Multi.c"
#line 1629 "pogl_gl_Vert_Multi.xs"
	{
		GLfloat * v_s = EL(v, sizeof(GLfloat));
		glMultiTexCoord2fvARB(target,v_s);
	}
#line 3115 "pogl_gl_Vert_Multi.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glMultiTexCoord2fvARB_p); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glMultiTexCoord2fvARB_p)
{
    dVAR; dXSARGS;
    if (items != 3)
       croak_xs_usage(cv,  "target, s, t");
    {
	GLenum	target = (int)SvIV(ST(0))
;
	GLfloat	s = (float)SvNV(ST(1))
;
	GLfloat	t = (float)SvNV(ST(2))
;
#line 1642 "pogl_gl_Vert_Multi.xs"
		loadProc(glMultiTexCoord2fvARB,"glMultiTexCoord2fvARB");
#line 3136 "pogl_gl_Vert_Multi.c"
#line 1644 "pogl_gl_Vert_Multi.xs"
	{
		GLfloat param[2];
		param[0] = s;
		param[1] = t;
		glMultiTexCoord2fvARB(target,param);
	}
#line 3144 "pogl_gl_Vert_Multi.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glMultiTexCoord2iARB); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glMultiTexCoord2iARB)
{
    dVAR; dXSARGS;
    if (items != 3)
       croak_xs_usage(cv,  "target, s, t");
    {
	GLenum	target = (int)SvIV(ST(0))
;
	GLint	s = (int)SvIV(ST(1))
;
	GLint	t = (int)SvIV(ST(2))
;
#line 1658 "pogl_gl_Vert_Multi.xs"
		loadProc(glMultiTexCoord2iARB,"glMultiTexCoord2iARB");
#line 3165 "pogl_gl_Vert_Multi.c"
#line 1660 "pogl_gl_Vert_Multi.xs"
		glMultiTexCoord2iARB(target,s,t);
#line 3168 "pogl_gl_Vert_Multi.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glMultiTexCoord2ivARB_c); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glMultiTexCoord2ivARB_c)
{
    dVAR; dXSARGS;
    if (items != 2)
       croak_xs_usage(cv,  "target, v");
    {
	GLenum	target = (int)SvIV(ST(0))
;
	void *	v = INT2PTR(void *,SvIV(ST(1)))
;
#line 1668 "pogl_gl_Vert_Multi.xs"
		loadProc(glMultiTexCoord2ivARB,"glMultiTexCoord2ivARB");
#line 3187 "pogl_gl_Vert_Multi.c"
#line 1670 "pogl_gl_Vert_Multi.xs"
		glMultiTexCoord2ivARB(target,v);
#line 3190 "pogl_gl_Vert_Multi.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glMultiTexCoord2ivARB_s); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glMultiTexCoord2ivARB_s)
{
    dVAR; dXSARGS;
    if (items != 2)
       croak_xs_usage(cv,  "target, v");
    {
	GLenum	target = (int)SvIV(ST(0))
;
	void *	v = INT2PTR(void *,SvIV(ST(1)))
;
#line 1678 "pogl_gl_Vert_Multi.xs"
		loadProc(glMultiTexCoord2ivARB,"glMultiTexCoord2ivARB");
#line 3209 "pogl_gl_Vert_Multi.c"
#line 1680 "pogl_gl_Vert_Multi.xs"
	{
		GLint * v_s = EL(v, sizeof(GLint));
		glMultiTexCoord2ivARB(target,v_s);
	}
#line 3215 "pogl_gl_Vert_Multi.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glMultiTexCoord2ivARB_p); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glMultiTexCoord2ivARB_p)
{
    dVAR; dXSARGS;
    if (items != 3)
       croak_xs_usage(cv,  "target, s, t");
    {
	GLenum	target = (int)SvIV(ST(0))
;
	GLint	s = (int)SvIV(ST(1))
;
	GLint	t = (int)SvIV(ST(2))
;
#line 1693 "pogl_gl_Vert_Multi.xs"
		loadProc(glMultiTexCoord2ivARB,"glMultiTexCoord2ivARB");
#line 3236 "pogl_gl_Vert_Multi.c"
#line 1695 "pogl_gl_Vert_Multi.xs"
	{
		GLint param[2];
		param[0] = s;
		param[1] = t;
		glMultiTexCoord2ivARB(target,param);
	}
#line 3244 "pogl_gl_Vert_Multi.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glMultiTexCoord2sARB); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glMultiTexCoord2sARB)
{
    dVAR; dXSARGS;
    if (items != 3)
       croak_xs_usage(cv,  "target, s, t");
    {
	GLenum	target = (int)SvIV(ST(0))
;
	GLshort	s = (short)SvIV(ST(1))
;
	GLshort	t = (short)SvIV(ST(2))
;
#line 1709 "pogl_gl_Vert_Multi.xs"
		loadProc(glMultiTexCoord2sARB,"glMultiTexCoord2sARB");
#line 3265 "pogl_gl_Vert_Multi.c"
#line 1711 "pogl_gl_Vert_Multi.xs"
		glMultiTexCoord2sARB(target,s,t);
#line 3268 "pogl_gl_Vert_Multi.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glMultiTexCoord2svARB_c); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glMultiTexCoord2svARB_c)
{
    dVAR; dXSARGS;
    if (items != 2)
       croak_xs_usage(cv,  "target, v");
    {
	GLenum	target = (int)SvIV(ST(0))
;
	void *	v = INT2PTR(void *,SvIV(ST(1)))
;
#line 1719 "pogl_gl_Vert_Multi.xs"
		loadProc(glMultiTexCoord2svARB,"glMultiTexCoord2svARB");
#line 3287 "pogl_gl_Vert_Multi.c"
#line 1721 "pogl_gl_Vert_Multi.xs"
		glMultiTexCoord2svARB(target,v);
#line 3290 "pogl_gl_Vert_Multi.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glMultiTexCoord2svARB_s); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glMultiTexCoord2svARB_s)
{
    dVAR; dXSARGS;
    if (items != 2)
       croak_xs_usage(cv,  "target, v");
    {
	GLenum	target = (int)SvIV(ST(0))
;
	void *	v = INT2PTR(void *,SvIV(ST(1)))
;
#line 1729 "pogl_gl_Vert_Multi.xs"
		loadProc(glMultiTexCoord2svARB,"glMultiTexCoord2svARB");
#line 3309 "pogl_gl_Vert_Multi.c"
#line 1731 "pogl_gl_Vert_Multi.xs"
	{
		GLshort * v_s = EL(v, sizeof(GLshort));
		glMultiTexCoord2svARB(target,v_s);
	}
#line 3315 "pogl_gl_Vert_Multi.c"
    }
    XSRETURN_EMPTY;
}


XS_EUPXS(XS_OpenGL_glMultiTexCoord2svARB_p); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_OpenGL_glMultiTexCoord2svARB_p)
{
    dVAR; dXSARGS;
    if (items != 3)
       croak_xs_usage(cv,  "target, s, t");
    {
	GLenum	target = (int)SvIV(ST(0))
;
	GLshort	s = (short)SvIV(ST(1))
;
	GLshort	t = (short)SvIV(ST(2))
;
#line 1744 "pogl_gl_Vert_Multi.xs"
		loadProc(glMultiTexCoord2svARB,"glMultiTexCoord2svARB");
#line 3336 "pogl_gl_Vert_Multi.c"
#line 1746 "pogl_gl_Vert_Multi.xs"
	{
		GLshort param[2];
		param[0] = s;
		param[1] = t;
		glMultiTexCoord2svARB(target,param);
	}
#line 3344 "pogl_gl_Vert_Multi.c"
    }
    XSRETURN_EMPTY;
}

#endif 
#endif /* HAVE_GL */
#ifdef __cplusplus
extern "C"
#endif
XS_EXTERNAL(boot_OpenGL__GL__VertMulti); /* prototype to pass -Wmissing-prototypes */
XS_EXTERNAL(boot_OpenGL__GL__VertMulti)
{
    dVAR; dXSARGS;
#if (PERL_REVISION == 5 && PERL_VERSION < 9)
    char* file = __FILE__;
#else
    const char* file = __FILE__;
#endif

    PERL_UNUSED_VAR(cv); /* -W */
    PERL_UNUSED_VAR(items); /* -W */
#ifdef XS_APIVERSION_BOOTCHECK
    XS_APIVERSION_BOOTCHECK;
#endif
    XS_VERSION_BOOTCHECK;

#if XSubPPtmpAAAA
        newXS("OpenGL::glVertexPointerEXT_c", XS_OpenGL_glVertexPointerEXT_c, file);
        newXS("OpenGL::glVertexPointerEXT_s", XS_OpenGL_glVertexPointerEXT_s, file);
        newXS("OpenGL::glVertexPointerEXT_p", XS_OpenGL_glVertexPointerEXT_p, file);
        newXS("OpenGL::glNormalPointerEXT_c", XS_OpenGL_glNormalPointerEXT_c, file);
        newXS("OpenGL::glNormalPointerEXT_s", XS_OpenGL_glNormalPointerEXT_s, file);
        newXS("OpenGL::glNormalPointerEXT_p", XS_OpenGL_glNormalPointerEXT_p, file);
        newXS("OpenGL::glColorPointerEXT_c", XS_OpenGL_glColorPointerEXT_c, file);
        newXS("OpenGL::glColorPointerEXT_s", XS_OpenGL_glColorPointerEXT_s, file);
        newXS("OpenGL::glColorPointerEXT_oga", XS_OpenGL_glColorPointerEXT_oga, file);
        newXS("OpenGL::glIndexPointerEXT_c", XS_OpenGL_glIndexPointerEXT_c, file);
        newXS("OpenGL::glIndexPointerEXT_s", XS_OpenGL_glIndexPointerEXT_s, file);
        newXS("OpenGL::glIndexPointerEXT_p", XS_OpenGL_glIndexPointerEXT_p, file);
        newXS("OpenGL::glTexCoordPointerEXT_c", XS_OpenGL_glTexCoordPointerEXT_c, file);
        newXS("OpenGL::glTexCoordPointerEXT_s", XS_OpenGL_glTexCoordPointerEXT_s, file);
        newXS("OpenGL::glTexCoordPointerEXT_p", XS_OpenGL_glTexCoordPointerEXT_p, file);
        newXS("OpenGL::glEdgeFlagPointerEXT_c", XS_OpenGL_glEdgeFlagPointerEXT_c, file);
        newXS("OpenGL::glEdgeFlagPointerEXT_s", XS_OpenGL_glEdgeFlagPointerEXT_s, file);
        newXS("OpenGL::glEdgeFlagPointerEXT_oga", XS_OpenGL_glEdgeFlagPointerEXT_oga, file);
#endif
#if XSubPPtmpAAAB
        newXS("OpenGL::glDrawBuffersARB_c", XS_OpenGL_glDrawBuffersARB_c, file);
        newXS("OpenGL::glDrawBuffersARB_s", XS_OpenGL_glDrawBuffersARB_s, file);
        newXS("OpenGL::glDrawBuffersARB_p", XS_OpenGL_glDrawBuffersARB_p, file);
#endif
#if XSubPPtmpAAAC
        newXS("OpenGL::glDrawBuffers_c", XS_OpenGL_glDrawBuffers_c, file);
        newXS("OpenGL::glDrawBuffers_s", XS_OpenGL_glDrawBuffers_s, file);
        newXS("OpenGL::glDrawBuffers_p", XS_OpenGL_glDrawBuffers_p, file);
#endif
#if XSubPPtmpAAAD
        newXS("OpenGL::glIsRenderbufferEXT", XS_OpenGL_glIsRenderbufferEXT, file);
        newXS("OpenGL::glBindRenderbufferEXT", XS_OpenGL_glBindRenderbufferEXT, file);
        newXS("OpenGL::glDeleteRenderbuffersEXT_c", XS_OpenGL_glDeleteRenderbuffersEXT_c, file);
        newXS("OpenGL::glDeleteRenderbuffersEXT_s", XS_OpenGL_glDeleteRenderbuffersEXT_s, file);
        newXS("OpenGL::glDeleteRenderbuffersEXT_p", XS_OpenGL_glDeleteRenderbuffersEXT_p, file);
        newXS("OpenGL::glGenRenderbuffersEXT_c", XS_OpenGL_glGenRenderbuffersEXT_c, file);
        newXS("OpenGL::glGenRenderbuffersEXT_s", XS_OpenGL_glGenRenderbuffersEXT_s, file);
        newXS("OpenGL::glGenRenderbuffersEXT_p", XS_OpenGL_glGenRenderbuffersEXT_p, file);
        newXS("OpenGL::glRenderbufferStorageEXT", XS_OpenGL_glRenderbufferStorageEXT, file);
        newXS("OpenGL::glGetRenderbufferParameterivEXT_s", XS_OpenGL_glGetRenderbufferParameterivEXT_s, file);
        newXS("OpenGL::glGetRenderbufferParameterivEXT_c", XS_OpenGL_glGetRenderbufferParameterivEXT_c, file);
        newXS("OpenGL::glIsFramebufferEXT", XS_OpenGL_glIsFramebufferEXT, file);
        newXS("OpenGL::glBindFramebufferEXT", XS_OpenGL_glBindFramebufferEXT, file);
        newXS("OpenGL::glDeleteFramebuffersEXT_c", XS_OpenGL_glDeleteFramebuffersEXT_c, file);
        newXS("OpenGL::glDeleteFramebuffersEXT_s", XS_OpenGL_glDeleteFramebuffersEXT_s, file);
        newXS("OpenGL::glDeleteFramebuffersEXT_p", XS_OpenGL_glDeleteFramebuffersEXT_p, file);
        newXS("OpenGL::glGenFramebuffersEXT_c", XS_OpenGL_glGenFramebuffersEXT_c, file);
        newXS("OpenGL::glGenFramebuffersEXT_s", XS_OpenGL_glGenFramebuffersEXT_s, file);
        newXS("OpenGL::glGenFramebuffersEXT_p", XS_OpenGL_glGenFramebuffersEXT_p, file);
        newXS("OpenGL::glCheckFramebufferStatusEXT", XS_OpenGL_glCheckFramebufferStatusEXT, file);
        newXS("OpenGL::glFramebufferTexture1DEXT", XS_OpenGL_glFramebufferTexture1DEXT, file);
        newXS("OpenGL::glFramebufferTexture2DEXT", XS_OpenGL_glFramebufferTexture2DEXT, file);
        newXS("OpenGL::glFramebufferTexture3DEXT", XS_OpenGL_glFramebufferTexture3DEXT, file);
        newXS("OpenGL::glFramebufferRenderbufferEXT", XS_OpenGL_glFramebufferRenderbufferEXT, file);
        newXS("OpenGL::glGetFramebufferAttachmentParameterivEXT_s", XS_OpenGL_glGetFramebufferAttachmentParameterivEXT_s, file);
        newXS("OpenGL::glGetFramebufferAttachmentParameterivEXT_c", XS_OpenGL_glGetFramebufferAttachmentParameterivEXT_c, file);
        newXS("OpenGL::glGenerateMipmapEXT", XS_OpenGL_glGenerateMipmapEXT, file);
#endif
#if XSubPPtmpAAAE
        newXS("OpenGL::glBindBufferARB", XS_OpenGL_glBindBufferARB, file);
        newXS("OpenGL::glDeleteBuffersARB_c", XS_OpenGL_glDeleteBuffersARB_c, file);
        newXS("OpenGL::glDeleteBuffersARB_s", XS_OpenGL_glDeleteBuffersARB_s, file);
        newXS("OpenGL::glDeleteBuffersARB_p", XS_OpenGL_glDeleteBuffersARB_p, file);
        newXS("OpenGL::glGenBuffersARB_c", XS_OpenGL_glGenBuffersARB_c, file);
        newXS("OpenGL::glGenBuffersARB_s", XS_OpenGL_glGenBuffersARB_s, file);
        newXS("OpenGL::glGenBuffersARB_p", XS_OpenGL_glGenBuffersARB_p, file);
        newXS("OpenGL::glIsBufferARB", XS_OpenGL_glIsBufferARB, file);
        newXS("OpenGL::glBufferDataARB_c", XS_OpenGL_glBufferDataARB_c, file);
        newXS("OpenGL::glBufferDataARB_s", XS_OpenGL_glBufferDataARB_s, file);
        newXS("OpenGL::glBufferDataARB_p", XS_OpenGL_glBufferDataARB_p, file);
        newXS("OpenGL::glBufferSubDataARB_c", XS_OpenGL_glBufferSubDataARB_c, file);
        newXS("OpenGL::glBufferSubDataARB_s", XS_OpenGL_glBufferSubDataARB_s, file);
        newXS("OpenGL::glBufferSubDataARB_p", XS_OpenGL_glBufferSubDataARB_p, file);
        newXS("OpenGL::glGetBufferSubDataARB_c", XS_OpenGL_glGetBufferSubDataARB_c, file);
        newXS("OpenGL::glGetBufferSubDataARB_s", XS_OpenGL_glGetBufferSubDataARB_s, file);
        newXS("OpenGL::glGetBufferSubDataARB_p", XS_OpenGL_glGetBufferSubDataARB_p, file);
        newXS("OpenGL::glMapBufferARB_c", XS_OpenGL_glMapBufferARB_c, file);
        newXS("OpenGL::glMapBufferARB_p", XS_OpenGL_glMapBufferARB_p, file);
        newXS("OpenGL::glUnmapBufferARB", XS_OpenGL_glUnmapBufferARB, file);
        newXS("OpenGL::glGetBufferParameterivARB_c", XS_OpenGL_glGetBufferParameterivARB_c, file);
        newXS("OpenGL::glGetBufferParameterivARB_s", XS_OpenGL_glGetBufferParameterivARB_s, file);
        newXS("OpenGL::glGetBufferParameterivARB_p", XS_OpenGL_glGetBufferParameterivARB_p, file);
        newXS("OpenGL::glGetBufferPointervARB_c", XS_OpenGL_glGetBufferPointervARB_c, file);
        newXS("OpenGL::glGetBufferPointervARB_s", XS_OpenGL_glGetBufferPointervARB_s, file);
        newXS("OpenGL::glGetBufferPointervARB_p", XS_OpenGL_glGetBufferPointervARB_p, file);
#endif
#if XSubPPtmpAAAF
        newXS("OpenGL::glActiveTextureARB", XS_OpenGL_glActiveTextureARB, file);
        newXS("OpenGL::glClientActiveTextureARB", XS_OpenGL_glClientActiveTextureARB, file);
        newXS("OpenGL::glMultiTexCoord1dARB", XS_OpenGL_glMultiTexCoord1dARB, file);
        newXS("OpenGL::glMultiTexCoord1dvARB_c", XS_OpenGL_glMultiTexCoord1dvARB_c, file);
        newXS("OpenGL::glMultiTexCoord1dvARB_s", XS_OpenGL_glMultiTexCoord1dvARB_s, file);
        newXS("OpenGL::glMultiTexCoord1dvARB_p", XS_OpenGL_glMultiTexCoord1dvARB_p, file);
        newXS("OpenGL::glMultiTexCoord1fARB", XS_OpenGL_glMultiTexCoord1fARB, file);
        newXS("OpenGL::glMultiTexCoord1fvARB_c", XS_OpenGL_glMultiTexCoord1fvARB_c, file);
        newXS("OpenGL::glMultiTexCoord1fvARB_s", XS_OpenGL_glMultiTexCoord1fvARB_s, file);
        newXS("OpenGL::glMultiTexCoord1fvARB_p", XS_OpenGL_glMultiTexCoord1fvARB_p, file);
        newXS("OpenGL::glMultiTexCoord1iARB", XS_OpenGL_glMultiTexCoord1iARB, file);
        newXS("OpenGL::glMultiTexCoord1ivARB_c", XS_OpenGL_glMultiTexCoord1ivARB_c, file);
        newXS("OpenGL::glMultiTexCoord1ivARB_s", XS_OpenGL_glMultiTexCoord1ivARB_s, file);
        newXS("OpenGL::glMultiTexCoord1ivARB_p", XS_OpenGL_glMultiTexCoord1ivARB_p, file);
        newXS("OpenGL::glMultiTexCoord1sARB", XS_OpenGL_glMultiTexCoord1sARB, file);
        newXS("OpenGL::glMultiTexCoord1svARB_c", XS_OpenGL_glMultiTexCoord1svARB_c, file);
        newXS("OpenGL::glMultiTexCoord1svARB_s", XS_OpenGL_glMultiTexCoord1svARB_s, file);
        newXS("OpenGL::glMultiTexCoord1svARB_p", XS_OpenGL_glMultiTexCoord1svARB_p, file);
        newXS("OpenGL::glMultiTexCoord2dARB", XS_OpenGL_glMultiTexCoord2dARB, file);
        newXS("OpenGL::glMultiTexCoord2dvARB_c", XS_OpenGL_glMultiTexCoord2dvARB_c, file);
        newXS("OpenGL::glMultiTexCoord2dvARB_s", XS_OpenGL_glMultiTexCoord2dvARB_s, file);
        newXS("OpenGL::glMultiTexCoord2dvARB_p", XS_OpenGL_glMultiTexCoord2dvARB_p, file);
        newXS("OpenGL::glMultiTexCoord2fARB", XS_OpenGL_glMultiTexCoord2fARB, file);
        newXS("OpenGL::glMultiTexCoord2fvARB_c", XS_OpenGL_glMultiTexCoord2fvARB_c, file);
        newXS("OpenGL::glMultiTexCoord2fvARB_s", XS_OpenGL_glMultiTexCoord2fvARB_s, file);
        newXS("OpenGL::glMultiTexCoord2fvARB_p", XS_OpenGL_glMultiTexCoord2fvARB_p, file);
        newXS("OpenGL::glMultiTexCoord2iARB", XS_OpenGL_glMultiTexCoord2iARB, file);
        newXS("OpenGL::glMultiTexCoord2ivARB_c", XS_OpenGL_glMultiTexCoord2ivARB_c, file);
        newXS("OpenGL::glMultiTexCoord2ivARB_s", XS_OpenGL_glMultiTexCoord2ivARB_s, file);
        newXS("OpenGL::glMultiTexCoord2ivARB_p", XS_OpenGL_glMultiTexCoord2ivARB_p, file);
        newXS("OpenGL::glMultiTexCoord2sARB", XS_OpenGL_glMultiTexCoord2sARB, file);
        newXS("OpenGL::glMultiTexCoord2svARB_c", XS_OpenGL_glMultiTexCoord2svARB_c, file);
        newXS("OpenGL::glMultiTexCoord2svARB_s", XS_OpenGL_glMultiTexCoord2svARB_s, file);
        newXS("OpenGL::glMultiTexCoord2svARB_p", XS_OpenGL_glMultiTexCoord2svARB_p, file);
#endif

    /* Initialisation Section */

#if XSubPPtmpAAAA
#endif
#if XSubPPtmpAAAB
#endif
#if XSubPPtmpAAAC
#endif
#if XSubPPtmpAAAD
#endif
#if XSubPPtmpAAAE
#endif
#if XSubPPtmpAAAF
#endif
#line 3509 "pogl_gl_Vert_Multi.c"

    /* End of Initialisation Section */

#if (PERL_REVISION == 5 && PERL_VERSION >= 9)
  if (PL_unitcheckav)
       call_list(PL_scopestack_ix, PL_unitcheckav);
#endif
    XSRETURN_YES;
}

