package OpenGL::Misc;

use strict;
use warnings;

#  Copyright (c) 1998,1999 Kenneth Albanowski. All rights reserved.
#  Copyright (c) 2007 Bob Free. All rights reserved.
#  Copyright (c) 2009 Christopher Marshall. All rights reserved.
#  Copyright (c) 2015 Bob Free. All rights reserved.
#  Copyright (c) 2016 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.

our @gl_func_common_modern = qw(
  glAccum
  glAlphaFunc
  glAttachShader
  glBegin
  glBeginQuery
  glBlendColorEXT
  glBlendEquationEXT
  glBlendFunc
  glCallList
  glClear
  glClearAccum
  glClearColor
  glClearDepth
  glClearIndex
  glClearStencil
  glColor3b
  glColor3d
  glColor3f
  glColor3i
  glColor3s
  glColor3ub
  glColor3ui
  glColor4d
  glColor4f
  glColor4i
  glColor4s
  glColor4ub
  glColor4ui
  glColor4us
  glColorMask
  glColorMaterial
  glCopyPixels
  glCullFace
  glDeleteLists
  glDeleteShader
  glDepthFunc
  glDepthMask
  glDepthRange
  glDisable
  glDrawBuffer
  glDrawElementsBaseVertex_c
  glEdgeFlag
  glEnable
  glEnd
  glEndList
  glEndQuery
  glEvalCoord1d
  glEvalCoord1f
  glEvalCoord2d
  glEvalCoord2f
  glEvalMesh1
  glEvalMesh2
  glEvalPoint1
  glEvalPoint2
  glFinish
  glFlush
  glFogf
  glFogi
  glFrontFace
  glFrustum
  glGenLists
  glGenQueries_p
  glGetError
  glGetProgramiv_p
  glGetShaderInfoLog_p
  glGetShaderiv_p
  glHint
  glIndexMask
  glIndexd
  glIndexi
  glInitNames
  glIsEnabled
  glIsList
  glLightModelf
  glLightModeli
  glLightf
  glLighti
  glLineStipple
  glLineWidth
  glListBase
  glLoadIdentity
  glLoadName
  glLogicOp
  glMapGrid1d
  glMapGrid1f
  glMapGrid2d
  glMapGrid2f
  glMaterialf
  glMateriali
  glMatrixMode
  glNewList
  glNormal3b
  glNormal3d
  glNormal3f
  glNormal3i
  glNormal3s
  glOrtho
  glPassThrough
  glPixelStoref
  glPixelStorei
  glPixelTransferf
  glPixelTransferi
  glPixelZoom
  glPointSize
  glPolygonMode
  glPolygonOffsetEXT
  glPopAttrib
  glPopMatrix
  glPopName
  glPushAttrib
  glPushMatrix
  glPushName
  glRasterPos2d
  glRasterPos2f
  glRasterPos2i
  glRasterPos2s
  glRasterPos3d
  glRasterPos3f
  glRasterPos3i
  glRasterPos3s
  glRasterPos4d
  glRasterPos4f
  glRasterPos4i
  glRasterPos4s
  glReadBuffer
  glRectd
  glRectf
  glRecti
  glRects
  glRenderMode
  glRotated
  glRotatef
  glScaled
  glScalef
  glScissor
  glShadeModel
  glStencilFunc
  glStencilMask
  glStencilOp
  glTexCoord1d
  glTexCoord1f
  glTexCoord1i
  glTexCoord1s
  glTexCoord2d
  glTexCoord2f
  glTexCoord2i
  glTexCoord2s
  glTexCoord3d
  glTexCoord3f
  glTexCoord3i
  glTexCoord3s
  glTexCoord4d
  glTexCoord4f
  glTexCoord4i
  glTexCoord4s
  glTexEnvf
  glTexEnvi
  glTexGend
  glTexGenf
  glTexGeni
  glTexParameterf
  glTexParameteri
  glTranslated
  glTranslatef
  glVertex2d
  glVertex2f
  glVertex2i
  glVertex2s
  glVertex3d
  glVertex3f
  glVertex3i
  glVertex3s
  glVertex4d
  glVertex4f
  glVertex4i
  glVertex4s
  glViewport
);

our @extra_gl_func = qw(
   glAreTexturesResident_s
   glBitmap_p
   glBitmap_s
   glBufferDataARB_o
   glBufferDataARB_p
   glBufferDataARB_s
   glBufferSubDataARB_o
   glBufferSubDataARB_p
   glBufferSubDataARB_s
   glCallLists_p
   glCallLists_s
   glClipPlane_s
   glColor3bv_s
   glColor3dv_s
   glColor3fv_s
   glColor3iv_s
   glColor3sv_s
   glColor3ubv_s
   glColor3uiv_s
   glColor3usv_s
   glColor4bv_s
   glColor4dv_s
   glColor4fv_s
   glColor4iv_s
   glColor4sv_s
   glColor4ubv_s
   glColor4uiv_s
   glColor4usv_s
   glColorPointer_o
   glColorPointer_p
   glColorPointer_s
   glColorPointerEXT_o
   glColorPointerEXT_p
   glColorPointerEXT_s
   glDeleteBuffers_s
   glDeleteBuffersARB_s
   glDeleteFramebuffers_s
   glDeleteFramebuffersEXT_s
   glDeleteProgramsARB_s
   glDeleteRenderbuffers_s
   glDeleteRenderbuffersEXT_s
   glDeleteTextures_s
   glDrawBuffers_s
   glDrawBuffersARB_s
   glDrawElements_p
   glDrawElements_s
   glDrawPixels_p
   glDrawPixels_s
   glDrawRangeElements_p
   glDrawRangeElements_s
   glEdgeFlagPointer_p
   glEdgeFlagPointer_s
   glEdgeFlagPointerEXT_p
   glEdgeFlagPointerEXT_s
   glFogfv_s
   glFogiv_s
   glGenBuffers_s
   glGenBuffersARB_s
   glGenFramebuffers_s
   glGenFramebuffersEXT_s
   glGenProgramsARB_s
   glGenRenderbuffers_s
   glGenRenderbuffersEXT_s
   glGenTextures_s
   glGetActiveAttribARB_s
   glGetActiveUniformARB_s
   glGetAttachedObjectsARB_p
   glGetAttachedObjectsARB_s
   glGetAttribLocationARB_c
   glGetAttribLocationARB_p
   glGetBooleanv_s
   glGetBufferParameteriv_s
   glGetBufferParameterivARB_s
   glGetBufferPointervARB_o
   glGetBufferPointervARB_p
   glGetBufferPointervARB_s
   glGetBufferSubDataARB_o
   glGetBufferSubDataARB_p
   glGetBufferSubDataARB_s
   glGetClipPlane_s
   glGetDoublev_s
   glGetFloatv_s
   glGetFramebufferAttachmentParameteriv_s
   glGetFramebufferAttachmentParameterivEXT_s
   glGetIntegerv_s
   glGetLightfv_s
   glGetLightiv_s
   glGetMapdv_p
   glGetMapdv_s
   glGetMapfv_p
   glGetMapfv_s
   glGetMapiv_p
   glGetMapiv_s
   glGetMaterialfv_s
   glGetMaterialiv_s
   glGetObjectParameterfvARB_p
   glGetObjectParameterfvARB_s
   glGetObjectParameterivARB_p
   glGetObjectParameterivARB_s
   glGetPixelMapfv_p
   glGetPixelMapfv_s
   glGetPixelMapuiv_p
   glGetPixelMapuiv_s
   glGetPixelMapusv_p
   glGetPixelMapusv_s
   glGetPointerv_p
   glGetPointerv_s
   glGetPolygonStipple_p
   glGetPolygonStipple_s
   glGetProgramEnvParameterdvARB_s
   glGetProgramEnvParameterfvARB_s
   glGetProgramivARB_s
   glGetProgramLocalParameterdvARB_s
   glGetProgramLocalParameterfvARB_s
   glGetProgramStringARB_p
   glGetProgramStringARB_s
   glGetRenderbufferParameteriv_s
   glGetRenderbufferParameterivEXT_s
   glGetTexEnvfv_s
   glGetTexEnviv_s
   glGetTexGendv_s
   glGetTexGenfv_s
   glGetTexGeniv_s
   glGetTexImage_p
   glGetTexImage_s
   glGetTexLevelParameterfv_s
   glGetTexLevelParameteriv_s
   glGetTexParameterfv_s
   glGetTexParameteriv_s
   glGetUniformfvARB_p
   glGetUniformivARB_p
   glGetUniformLocationARB_c
   glGetUniformLocationARB_p
   glGetVertexAttribdvARB_s
   glGetVertexAttribfvARB_s
   glGetVertexAttribivARB_s
   glGetVertexAttribPointervARB_p
   glIndexPointer_o
   glIndexPointer_p
   glIndexPointer_s
   glIndexPointerEXT_o
   glIndexPointerEXT_p
   glIndexPointerEXT_s
   glLightfv_s
   glLightiv_s
   glLightModelfv_s
   glLightModeliv_s
   glLoadMatrixd_s
   glLoadMatrixf_s
   glMap1d_p
   glMap1d_s
   glMap1f_p
   glMap1f_s
   glMap2d_p
   glMap2d_s
   glMap2f_p
   glMap2f_s
   glMapBufferARB_o
   glMapBufferARB_p
   glMaterialfv_s
   glMaterialiv_s
   glMultiTexCoord1dv_s
   glMultiTexCoord1dvARB_s
   glMultiTexCoord1fv_s
   glMultiTexCoord1fvARB_s
   glMultiTexCoord1iv_s
   glMultiTexCoord1ivARB_s
   glMultiTexCoord1sv_s
   glMultiTexCoord1svARB_s
   glMultiTexCoord2dv_s
   glMultiTexCoord2dvARB_s
   glMultiTexCoord2fv_s
   glMultiTexCoord2fvARB_s
   glMultiTexCoord2iv_s
   glMultiTexCoord2ivARB_s
   glMultiTexCoord2sv_s
   glMultiTexCoord2svARB_s
   glMultiTexCoord3dv_s
   glMultiTexCoord3dvARB_s
   glMultiTexCoord3fv_s
   glMultiTexCoord3fvARB_s
   glMultiTexCoord3iv_s
   glMultiTexCoord3ivARB_s
   glMultiTexCoord3sv_s
   glMultiTexCoord3svARB_s
   glMultiTexCoord4dv_s
   glMultiTexCoord4dvARB_s
   glMultiTexCoord4fv_s
   glMultiTexCoord4fvARB_s
   glMultiTexCoord4iv_s
   glMultiTexCoord4ivARB_s
   glMultiTexCoord4sv_s
   glMultiTexCoord4svARB_s
   glNormal3bv_s
   glNormal3dv_s
   glNormal3fv_s
   glNormal3iv_s
   glNormal3sv_s
   glNormalPointer_o
   glNormalPointer_p
   glNormalPointer_s
   glNormalPointerEXT_o
   glNormalPointerEXT_p
   glNormalPointerEXT_s
   glPixelMapfv_s
   glPixelMapuiv_s
   glPixelMapusv_s
   glPointParameterfvARB_s
   glPolygonStipple_p
   glPolygonStipple_s
   glPrioritizeTextures_s
   glProgramEnvParameter4dvARB_s
   glProgramEnvParameter4fvARB_s
   glProgramLocalParameter4dvARB_s
   glProgramLocalParameter4fvARB_s
   glProgramStringARB_p
   glProgramStringARB_s
   glRasterPos2dv_s
   glRasterPos2fv_s
   glRasterPos2iv_s
   glRasterPos2sv_s
   glRasterPos3dv_s
   glRasterPos3fv_s
   glRasterPos3iv_s
   glRasterPos3sv_s
   glRasterPos4dv_s
   glRasterPos4fv_s
   glRasterPos4iv_s
   glRasterPos4sv_s
   glReadPixels_p
   glReadPixels_s
   glRectdv_s
   glRectfv_s
   glRectiv_s
   glRectsv_s
   glTexCoord1dv_s
   glTexCoord1fv_s
   glTexCoord1iv_s
   glTexCoord1sv_s
   glTexCoord2dv_s
   glTexCoord2fv_s
   glTexCoord2iv_s
   glTexCoord2sv_s
   glTexCoord3dv_s
   glTexCoord3fv_s
   glTexCoord3iv_s
   glTexCoord3sv_s
   glTexCoord4dv_s
   glTexCoord4fv_s
   glTexCoord4iv_s
   glTexCoord4sv_s
   glTexCoordPointer_o
   glTexCoordPointer_p
   glTexCoordPointer_s
   glTexCoordPointerEXT_o
   glTexCoordPointerEXT_p
   glTexCoordPointerEXT_s
   glTexEnvfv_s
   glTexEnviv_s
   glTexGendv_s
   glTexGenfv_s
   glTexGeniv_s
   glTexImage1D_p
   glTexImage1D_s
   glTexImage2D_p
   glTexImage2D_s
   glTexImage3D_p
   glTexImage3D_s
   glTexImage3DEXT_p
   glTexImage3DEXT_s
   glTexParameterfv_s
   glTexParameteriv_s
   glTexSubImage1D_p
   glTexSubImage1D_s
   glTexSubImage1DEXT_p
   glTexSubImage1DEXT_s
   glTexSubImage2D_p
   glTexSubImage2D_s
   glTexSubImage2DEXT_p
   glTexSubImage2DEXT_s
   glTexSubImage3D_p
   glTexSubImage3D_s
   glUniform1fvARB_s
   glUniform1ivARB_s
   glUniform2fvARB_s
   glUniform2ivARB_s
   glUniform3fvARB_s
   glUniform3ivARB_s
   glUniform4fvARB_s
   glUniform4ivARB_s
   glUniformMatrix2fvARB_s
   glUniformMatrix3fvARB_s
   glUniformMatrix4fvARB_s
   glVertex2dv_s
   glVertex2fv_s
   glVertex2iv_s
   glVertex2sv_s
   glVertex3dv_s
   glVertex3fv_s
   glVertex3iv_s
   glVertex3sv_s
   glVertex4dv_s
   glVertex4fv_s
   glVertex4iv_s
   glVertex4sv_s
   glVertexAttrib1dvARB_s
   glVertexAttrib1fvARB_s
   glVertexAttrib1svARB_s
   glVertexAttrib2dvARB_s
   glVertexAttrib2fvARB_s
   glVertexAttrib2svARB_s
   glVertexAttrib3dvARB_s
   glVertexAttrib3fvARB_s
   glVertexAttrib3svARB_s
   glVertexAttrib4bvARB_s
   glVertexAttrib4dvARB_s
   glVertexAttrib4fvARB_s
   glVertexAttrib4ivARB_s
   glVertexAttrib4NbvARB_s
   glVertexAttrib4NivARB_s
   glVertexAttrib4NsvARB_s
   glVertexAttrib4NubvARB_s
   glVertexAttrib4NuivARB_s
   glVertexAttrib4NusvARB_s
   glVertexAttrib4svARB_s
   glVertexAttrib4ubvARB_s
   glVertexAttrib4uivARB_s
   glVertexAttrib4usvARB_s
   glVertexAttribPointerARB_p
   glVertexPointer_o
   glVertexPointer_p
   glVertexPointer_s
   glVertexPointerEXT_o
   glVertexPointerEXT_p
   glVertexPointerEXT_s
   glpCheckExtension
   glpFullScreen
   glpHasGLUT
   glpRestoreScreen
);

our @extra_gl_func_modern = qw(
  glActiveTexture
  glActiveTextureARB
  glAreTexturesResident_c
  glAreTexturesResident_p
  glAreTexturesResidentEXT_p
  glArrayElement
  glArrayElementEXT
  glAttachObjectARB
  glBindAttribLocationARB
  glBindBufferARB
  glBindFramebufferEXT
  glBindProgramARB
  glBindRenderbufferEXT
  glBindTexture
  glBindTextureEXT
  glBindVertexArray
  glBufferDataARB_c
  glBufferSubDataARB_c
  glCallLists_c
  glCheckFramebufferStatusEXT
  glClampColorARB
  glClientActiveTexture
  glClientActiveTextureARB
  glClipPlane_c
  glClipPlane_p
  glColor3bv_c
  glColor3bv_p
  glColor3dv_c
  glColor3dv_p
  glColor3fv_c
  glColor3fv_p
  glColor3iv_c
  glColor3iv_p
  glColor3sv_c
  glColor3sv_p
  glColor3ubv_c
  glColor3ubv_p
  glColor3uiv_c
  glColor3uiv_p
  glColor3us
  glColor3usv_c
  glColor3usv_p
  glColor4b
  glColor4bv_c
  glColor4bv_p
  glColor4dv_c
  glColor4dv_p
  glColor4fv_c
  glColor4fv_p
  glColor4iv_c
  glColor4iv_p
  glColor4sv_c
  glColor4sv_p
  glColor4ubv_c
  glColor4ubv_p
  glColor4uiv_c
  glColor4uiv_p
  glColor4usv_c
  glColor4usv_p
  glColorPointer_c
  glColorPointerEXT_c
  glCompileShaderARB
  glCopyTexImage1D
  glCopyTexImage1DEXT
  glCopyTexImage2D
  glCopyTexImage2DEXT
  glCopyTexSubImage1D
  glCopyTexSubImage1DEXT
  glCopyTexSubImage2D
  glCopyTexSubImage2DEXT
  glCopyTexSubImage3D
  glCopyTexSubImage3DEXT
  glCreateProgramObjectARB
  glCreateShaderObjectARB
  glDeleteBuffersARB_c
  glDeleteBuffersARB_p
  glDeleteFramebuffersEXT_c
  glDeleteFramebuffersEXT_p
  glDeleteObjectARB
  glDeleteProgramsARB_c
  glDeleteProgramsARB_p
  glDeleteRenderbuffersEXT_c
  glDeleteRenderbuffersEXT_p
  glDeleteTextures_c
  glDeleteTextures_p
  glDeleteTexturesEXT_p
  glDetachObjectARB
  glDisableClientState
  glDisableVertexAttribArrayARB
  glDrawArrays
  glDrawArraysEXT
  glDrawBuffers_c
  glDrawBuffers_p
  glDrawBuffersARB_c
  glDrawBuffersARB_p
  glDrawElements_c
  glDrawPixels_c
  glDrawRangeElements_c
  glEdgeFlagPointer_c
  glEdgeFlagPointerEXT_c
  glEnableClientState
  glEnableVertexAttribArrayARB
  glFeedbackBuffer_c
  glFogfv_c
  glFogfv_p
  glFogiv_c
  glFogiv_p
  glFramebufferRenderbufferEXT
  glFramebufferTexture1DEXT
  glFramebufferTexture2DEXT
  glFramebufferTexture3DEXT
  glGenBuffersARB_c
  glGenBuffersARB_p
  glGenerateMipmapEXT
  glGenFramebuffersEXT_c
  glGenFramebuffersEXT_p
  glGenProgramsARB_c
  glGenProgramsARB_p
  glGenRenderbuffersEXT_c
  glGenRenderbuffersEXT_p
  glGenTextures_c
  glGenTextures_p
  glGenTexturesEXT_p
  glGenVertexArrays_p
  glGetActiveAttribARB_c
  glGetActiveAttribARB_p
  glGetActiveUniformARB_c
  glGetActiveUniformARB_p
  glGetAttachedObjectsARB_c
  glGetBooleanv_c
  glGetBooleanv_p
  glGetBufferParameteriv_p
  glGetBufferParameterivARB_c
  glGetBufferParameterivARB_p
  glGetBufferPointervARB_c
  glGetBufferSubDataARB_c
  glGetClipPlane_c
  glGetClipPlane_p
  glGetDoublev_c
  glGetDoublev_p
  glGetFloatv_c
  glGetFloatv_p
  glGetFramebufferAttachmentParameterivEXT_c
  glGetInfoLogARB_c
  glGetInfoLogARB_p
  glGetIntegerv_c
  glGetIntegerv_p
  glGetLightfv_c
  glGetLightfv_p
  glGetLightiv_c
  glGetLightiv_p
  glGetMapdv_c
  glGetMapfv_c
  glGetMapiv_c
  glGetMaterialfv_c
  glGetMaterialfv_p
  glGetMaterialiv_c
  glGetMaterialiv_p
  glGetObjectParameterfvARB_c
  glGetObjectParameterivARB_c
  glGetPixelMapfv_c
  glGetPixelMapuiv_c
  glGetPixelMapusv_c
  glGetPointerv_c
  glGetPolygonStipple_c
  glGetProgramEnvParameterdvARB_c
  glGetProgramEnvParameterdvARB_p
  glGetProgramEnvParameterfvARB_c
  glGetProgramEnvParameterfvARB_p
  glGetProgramivARB_c
  glGetProgramivARB_p
  glGetProgramLocalParameterdvARB_c
  glGetProgramLocalParameterdvARB_p
  glGetProgramLocalParameterfvARB_c
  glGetProgramLocalParameterfvARB_p
  glGetProgramStringARB_c
  glGetRenderbufferParameterivEXT_c
  glGetShaderSourceARB_c
  glGetShaderSourceARB_p
  glGetString
  glGetTexEnvfv_c
  glGetTexEnvfv_p
  glGetTexEnviv_c
  glGetTexEnviv_p
  glGetTexGendv_c
  glGetTexGendv_p
  glGetTexGenfv_c
  glGetTexGenfv_p
  glGetTexGeniv_c
  glGetTexGeniv_p
  glGetTexImage_c
  glGetTexLevelParameterfv_c
  glGetTexLevelParameterfv_p
  glGetTexLevelParameteriv_c
  glGetTexLevelParameteriv_p
  glGetTexParameterfv_c
  glGetTexParameterfv_p
  glGetTexParameteriv_c
  glGetTexParameteriv_p
  glGetUniformfvARB_c
  glGetUniformivARB_c
  glGetVertexAttribdvARB_c
  glGetVertexAttribdvARB_p
  glGetVertexAttribfvARB_c
  glGetVertexAttribfvARB_p
  glGetVertexAttribivARB_c
  glGetVertexAttribivARB_p
  glGetVertexAttribPointervARB_c
  glIndexPointer_c
  glIndexPointerEXT_c
  glInterleavedArrays_c
  glIsBufferARB
  glIsFramebufferEXT
  glIsProgramARB
  glIsRenderbufferEXT
  glIsTexture
  glIsTextureEXT
  glLightfv_c
  glLightfv_p
  glLightiv_c
  glLightiv_p
  glLightModelfv_c
  glLightModelfv_p
  glLightModeliv_c
  glLightModeliv_p
  glLinkProgramARB
  glLoadMatrixd_c
  glLoadMatrixd_p
  glLoadMatrixf_c
  glLoadMatrixf_p
  glMap1d_c
  glMap1f_c
  glMap2d_c
  glMap2f_c
  glMapBufferARB_c
  glMaterialfv_c
  glMaterialfv_p
  glMaterialiv_c
  glMaterialiv_p
  glMultiTexCoord1d
  glMultiTexCoord1dARB
  glMultiTexCoord1dv_c
  glMultiTexCoord1dv_p
  glMultiTexCoord1dvARB_c
  glMultiTexCoord1dvARB_p
  glMultiTexCoord1f
  glMultiTexCoord1fARB
  glMultiTexCoord1fv_c
  glMultiTexCoord1fv_p
  glMultiTexCoord1fvARB_c
  glMultiTexCoord1fvARB_p
  glMultiTexCoord1i
  glMultiTexCoord1iARB
  glMultiTexCoord1iv_c
  glMultiTexCoord1iv_p
  glMultiTexCoord1ivARB_c
  glMultiTexCoord1ivARB_p
  glMultiTexCoord1s
  glMultiTexCoord1sARB
  glMultiTexCoord1sv_c
  glMultiTexCoord1sv_p
  glMultiTexCoord1svARB_c
  glMultiTexCoord1svARB_p
  glMultiTexCoord2d
  glMultiTexCoord2dARB
  glMultiTexCoord2dv_c
  glMultiTexCoord2dv_p
  glMultiTexCoord2dvARB_c
  glMultiTexCoord2dvARB_p
  glMultiTexCoord2f
  glMultiTexCoord2fARB
  glMultiTexCoord2fv_c
  glMultiTexCoord2fv_p
  glMultiTexCoord2fvARB_c
  glMultiTexCoord2fvARB_p
  glMultiTexCoord2i
  glMultiTexCoord2iARB
  glMultiTexCoord2iv_c
  glMultiTexCoord2iv_p
  glMultiTexCoord2ivARB_c
  glMultiTexCoord2ivARB_p
  glMultiTexCoord2s
  glMultiTexCoord2sARB
  glMultiTexCoord2sv_c
  glMultiTexCoord2sv_p
  glMultiTexCoord2svARB_c
  glMultiTexCoord2svARB_p
  glMultiTexCoord3d
  glMultiTexCoord3dARB
  glMultiTexCoord3dv_c
  glMultiTexCoord3dv_p
  glMultiTexCoord3dvARB_c
  glMultiTexCoord3dvARB_p
  glMultiTexCoord3f
  glMultiTexCoord3fARB
  glMultiTexCoord3fv_c
  glMultiTexCoord3fv_p
  glMultiTexCoord3fvARB_c
  glMultiTexCoord3fvARB_p
  glMultiTexCoord3i
  glMultiTexCoord3iARB
  glMultiTexCoord3iv_c
  glMultiTexCoord3iv_p
  glMultiTexCoord3ivARB_c
  glMultiTexCoord3ivARB_p
  glMultiTexCoord3s
  glMultiTexCoord3sARB
  glMultiTexCoord3sv_c
  glMultiTexCoord3sv_p
  glMultiTexCoord3svARB_c
  glMultiTexCoord3svARB_p
  glMultiTexCoord4d
  glMultiTexCoord4dARB
  glMultiTexCoord4dv_c
  glMultiTexCoord4dv_p
  glMultiTexCoord4dvARB_c
  glMultiTexCoord4dvARB_p
  glMultiTexCoord4f
  glMultiTexCoord4fARB
  glMultiTexCoord4fv_c
  glMultiTexCoord4fv_p
  glMultiTexCoord4fvARB_c
  glMultiTexCoord4fvARB_p
  glMultiTexCoord4i
  glMultiTexCoord4iARB
  glMultiTexCoord4iv_c
  glMultiTexCoord4iv_p
  glMultiTexCoord4ivARB_c
  glMultiTexCoord4ivARB_p
  glMultiTexCoord4s
  glMultiTexCoord4sARB
  glMultiTexCoord4sv_c
  glMultiTexCoord4sv_p
  glMultiTexCoord4svARB_c
  glMultiTexCoord4svARB_p
  glMultMatrixd_p
  glMultMatrixf_p
  glNormal3bv_c
  glNormal3bv_p
  glNormal3dv_c
  glNormal3dv_p
  glNormal3fv_c
  glNormal3fv_p
  glNormal3iv_c
  glNormal3iv_p
  glNormal3sv_c
  glNormal3sv_p
  glNormalPointer_c
  glNormalPointerEXT_c
  glPixelMapfv_c
  glPixelMapfv_p
  glPixelMapuiv_c
  glPixelMapuiv_p
  glPixelMapusv_c
  glPixelMapusv_p
  glPointParameterfARB
  glPointParameterfvARB_c
  glPointParameterfvARB_p
  glPolygonOffset
  glPopClientAttrib
  glPrioritizeTextures_c
  glPrioritizeTextures_p
  glPrioritizeTexturesEXT_p
  glProgramEnvParameter4dARB
  glProgramEnvParameter4dvARB_c
  glProgramEnvParameter4dvARB_p
  glProgramEnvParameter4fARB
  glProgramEnvParameter4fvARB_c
  glProgramEnvParameter4fvARB_p
  glProgramLocalParameter4dARB
  glProgramLocalParameter4dvARB_c
  glProgramLocalParameter4dvARB_p
  glProgramLocalParameter4fARB
  glProgramLocalParameter4fvARB_c
  glProgramLocalParameter4fvARB_p
  glProgramStringARB_c
  glPushClientAttrib
  glRasterPos2dv_c
  glRasterPos2dv_p
  glRasterPos2fv_c
  glRasterPos2fv_p
  glRasterPos2iv_c
  glRasterPos2iv_p
  glRasterPos2sv_c
  glRasterPos2sv_p
  glRasterPos3dv_c
  glRasterPos3dv_p
  glRasterPos3fv_c
  glRasterPos3fv_p
  glRasterPos3iv_c
  glRasterPos3iv_p
  glRasterPos3sv_c
  glRasterPos3sv_p
  glRasterPos4dv_c
  glRasterPos4dv_p
  glRasterPos4fv_c
  glRasterPos4fv_p
  glRasterPos4iv_c
  glRasterPos4iv_p
  glRasterPos4sv_c
  glRasterPos4sv_p
  glReadPixels_c
  glRectdv_c
  glRectdv_p
  glRectfv_c
  glRectfv_p
  glRectiv_c
  glRectiv_p
  glRectsv_c
  glRectsv_p
  glRenderbufferStorageEXT
  glResizeBuffersMESA
  glSampleCoverageARB
  glSelectBuffer_c
  glShaderSourceARB_c
  glShaderSourceARB_p
  glTexCoord1dv_c
  glTexCoord1dv_p
  glTexCoord1fv_c
  glTexCoord1fv_p
  glTexCoord1iv_c
  glTexCoord1iv_p
  glTexCoord1sv_c
  glTexCoord1sv_p
  glTexCoord2dv_c
  glTexCoord2dv_p
  glTexCoord2fv_c
  glTexCoord2fv_p
  glTexCoord2iv_c
  glTexCoord2iv_p
  glTexCoord2sv_c
  glTexCoord2sv_p
  glTexCoord3dv_c
  glTexCoord3dv_p
  glTexCoord3fv_c
  glTexCoord3fv_p
  glTexCoord3iv_c
  glTexCoord3iv_p
  glTexCoord3sv_c
  glTexCoord3sv_p
  glTexCoord4dv_c
  glTexCoord4dv_p
  glTexCoord4fv_c
  glTexCoord4fv_p
  glTexCoord4iv_c
  glTexCoord4iv_p
  glTexCoord4sv_c
  glTexCoord4sv_p
  glTexCoordPointer_c
  glTexCoordPointerEXT_c
  glTexEnvfv_p
  glTexEnviv_p
  glTexGendv_c
  glTexGendv_p
  glTexGenfv_c
  glTexGenfv_p
  glTexGeniv_c
  glTexGeniv_p
  glTexImage1D_c
  glTexImage2D_c
  glTexImage3D_c
  glTexImage3DEXT_c
  glTexParameterfv_c
  glTexParameterfv_p
  glTexParameteriv_c
  glTexParameteriv_p
  glTexSubImage1D_c
  glTexSubImage1DEXT_c
  glTexSubImage2D_c
  glTexSubImage2DEXT_c
  glTexSubImage3D_c
  glUniform1fARB
  glUniform1fvARB_c
  glUniform1fvARB_p
  glUniform1iARB
  glUniform1ivARB_c
  glUniform1ivARB_p
  glUniform2fARB
  glUniform2fvARB_c
  glUniform2fvARB_p
  glUniform2iARB
  glUniform2ivARB_c
  glUniform2ivARB_p
  glUniform3fARB
  glUniform3fvARB_c
  glUniform3fvARB_p
  glUniform3iARB
  glUniform3ivARB_c
  glUniform3ivARB_p
  glUniform4fARB
  glUniform4fvARB_c
  glUniform4fvARB_p
  glUniform4iARB
  glUniform4ivARB_c
  glUniform4ivARB_p
  glUniformMatrix2fvARB_c
  glUniformMatrix2fvARB_p
  glUniformMatrix3fvARB_c
  glUniformMatrix3fvARB_p
  glUniformMatrix4fvARB_c
  glUniformMatrix4fvARB_p
  glUnmapBufferARB
  glUseProgramObjectARB
  glValidateProgramARB
  glVertex2dv_c
  glVertex2dv_p
  glVertex2fv_c
  glVertex2fv_p
  glVertex2iv_c
  glVertex2iv_p
  glVertex2sv_c
  glVertex2sv_p
  glVertex3dv_c
  glVertex3dv_p
  glVertex3fv_c
  glVertex3fv_p
  glVertex3iv_c
  glVertex3iv_p
  glVertex3sv_c
  glVertex3sv_p
  glVertex4dv_c
  glVertex4dv_p
  glVertex4fv_c
  glVertex4fv_p
  glVertex4iv_c
  glVertex4iv_p
  glVertex4sv_c
  glVertex4sv_p
  glVertexAttrib1dARB
  glVertexAttrib1dvARB_c
  glVertexAttrib1dvARB_p
  glVertexAttrib1fARB
  glVertexAttrib1fvARB_c
  glVertexAttrib1fvARB_p
  glVertexAttrib1sARB
  glVertexAttrib1svARB_c
  glVertexAttrib1svARB_p
  glVertexAttrib2dARB
  glVertexAttrib2dvARB_c
  glVertexAttrib2dvARB_p
  glVertexAttrib2fARB
  glVertexAttrib2fvARB_c
  glVertexAttrib2fvARB_p
  glVertexAttrib2sARB
  glVertexAttrib2svARB_c
  glVertexAttrib2svARB_p
  glVertexAttrib3dARB
  glVertexAttrib3dvARB_c
  glVertexAttrib3dvARB_p
  glVertexAttrib3fARB
  glVertexAttrib3fvARB_c
  glVertexAttrib3fvARB_p
  glVertexAttrib3sARB
  glVertexAttrib3svARB_c
  glVertexAttrib3svARB_p
  glVertexAttrib4bvARB_c
  glVertexAttrib4bvARB_p
  glVertexAttrib4dARB
  glVertexAttrib4dvARB_c
  glVertexAttrib4dvARB_p
  glVertexAttrib4fARB
  glVertexAttrib4fvARB_c
  glVertexAttrib4fvARB_p
  glVertexAttrib4ivARB_c
  glVertexAttrib4ivARB_p
  glVertexAttrib4NbvARB_c
  glVertexAttrib4NbvARB_p
  glVertexAttrib4NivARB_c
  glVertexAttrib4NivARB_p
  glVertexAttrib4NsvARB_c
  glVertexAttrib4NsvARB_p
  glVertexAttrib4NubARB
  glVertexAttrib4NubvARB_c
  glVertexAttrib4NubvARB_p
  glVertexAttrib4NuivARB_c
  glVertexAttrib4NuivARB_p
  glVertexAttrib4NusvARB_c
  glVertexAttrib4NusvARB_p
  glVertexAttrib4sARB
  glVertexAttrib4svARB_c
  glVertexAttrib4svARB_p
  glVertexAttrib4ubvARB_c
  glVertexAttrib4ubvARB_p
  glVertexAttrib4uivARB_c
  glVertexAttrib4uivARB_p
  glVertexAttrib4usvARB_c
  glVertexAttrib4usvARB_p
  glVertexAttribPointerARB_c
  glVertexPointer_c
  glVertexPointerEXT_c
  glWindowPos2dMESA
  glWindowPos2iMESA
  glWindowPos3dMESA
  glWindowPos3iMESA
  glWindowPos4dMESA
  glWindowPos4iMESA
  glpErrorString
);

our @modern_also_import = qw(
  glArrayElementEXT
  glBindBuffer
  glBindFramebuffer
  glBindRenderbuffer
  glBlendColor
  glBlendEquation
  glCheckFramebufferStatus
  glDeleteBuffers_p
  glDeleteFramebuffers_p
  glDeleteRenderbuffers_p
  glDeleteVertexArrays_p
  glFramebufferRenderbuffer
  glFramebufferTexture1D
  glFramebufferTexture2D
  glFramebufferTexture3D
  glGenBuffers_p
  glGenFramebuffers_p
  glGenRenderbuffers_p
  glGenerateMipmap
  glGetHandleARB
  glIsBuffer
  glIsFramebuffer
  glIsRenderbuffer
  glRenderbufferStorage
  glResizeBuffersMESA
  glUnmapBuffer
  glpErrorString
);

our @modern_import_as_vARB_p = qw(
  glMultiTexCoord1d
  glMultiTexCoord1f
  glMultiTexCoord1i
  glMultiTexCoord1s
  glMultiTexCoord2d
  glMultiTexCoord2f
  glMultiTexCoord2i
  glMultiTexCoord2s
  glMultiTexCoord3d
  glMultiTexCoord3f
  glMultiTexCoord3i
  glMultiTexCoord3s
  glMultiTexCoord4d
  glMultiTexCoord4f
  glMultiTexCoord4i
  glMultiTexCoord4s
  glProgramEnvParameter4d
  glProgramEnvParameter4f
  glProgramLocalParameter4d
  glProgramLocalParameter4f
  glVertexAttrib1d
  glVertexAttrib1s
  glVertexAttrib2d
  glVertexAttrib2s
  glVertexAttrib3d
  glVertexAttrib3f
  glVertexAttrib3s
  glVertexAttrib4d
  glVertexAttrib4f
  glVertexAttrib4s
);

our @modern_import_as_c_and_p = qw(
  glGetAttribLocationARB
  glGetUniformLocationARB
);

our @modern_import_p_as = qw(
  glDeleteQueries
  glGetQueryObjectiv
  glGetQueryObjectuiv
  glGetQueryiv
);

1;
