#ifndef CVIDEO3D_H_
#define CVIDEO3D_H_

#include "mfc.h"

#include <gl/gl.h>
#include <gl/glu.h>

typedef BOOL(__stdcall* PFNSWAPBUFFERSPROC)(HDC);
typedef int(__stdcall* PFNDESCRIBEPIXELFORMATPROC)(HDC, int, UINT, LPPIXELFORMATDESCRIPTOR);
typedef int(__stdcall* PFNCHOOSEPIXELFORMATPROC)(HDC, const PIXELFORMATDESCRIPTOR*);
typedef BOOL(__stdcall* PFNSETPIXELFORMATPROC)(HDC, int, const PIXELFORMATDESCRIPTOR*);
typedef HGLRC(__stdcall* PFNWGLGETCURRENTCONTEXTPROC)();
typedef HGLRC(__stdcall* PFNWGLCREATECONTEXTPROC)(HDC);
typedef HGLRC(__stdcall* PFNWGLCREATELAYERCONTEXTPROC)(HDC, int);
typedef BOOL(__stdcall* PFNWGLDELETECONTEXTPROC)(HGLRC);
typedef HDC(__stdcall* PFNWGLGETCURRENTDCPROC)();
typedef PROC(__stdcall* PFNWGLGETPROCADDRESSPROC)(LPCSTR);
typedef BOOL(__stdcall* PFNWGLMAKECURRENTPROC)(HDC, HGLRC);
typedef BOOL(__stdcall* PFNWGLSHARELISTSPROC)(HGLRC, HGLRC);
typedef BOOL(__stdcall* PFNWGLUSEFONTBITMAPSAPROC)(HDC, DWORD, DWORD, DWORD);
typedef BOOL(__stdcall* PFNWGLUSEFONTOUTLINESAPROC)(HDC, DWORD, DWORD, DWORD, FLOAT, FLOAT, int, LPGLYPHMETRICSFLOAT);
typedef BOOL(__stdcall* PFNWGLDESCRIBELAYERPLANEPROC)(HDC, int, int, UINT, LPLAYERPLANEDESCRIPTOR);
typedef int(__stdcall* PFNWGLSETLAYERPALETTEENTRIESPROC)(HDC, int, int, int, const COLORREF*);
typedef int(__stdcall* PFNWGLGETLAYERPALETTEENTRIESPROC)(HDC, int, int, int, COLORREF*);
typedef BOOL(__stdcall* PFNWGLREALIZELAYERPALETTEPROC)(HDC, int, BOOL);
typedef BOOL(__stdcall* PFNWGLSWAPLAYERBUFFERSPROC)(HDC, UINT);

typedef void(__stdcall* PFNGLACCUMPROC)(GLenum op, GLfloat value);
typedef void(__stdcall* PFNGLALPHAFUNCPROC)(GLenum func, GLclampf ref);
typedef GLboolean(__stdcall* PFNGLARETEXTURESRESIDENTPROC)(GLsizei n, const GLuint* textures, GLboolean* residences);
typedef void(__stdcall* PFNGLARRAYELEMENTPROC)(GLint i);
typedef void(__stdcall* PFNGLBEGINPROC)(GLenum mode);
typedef void(__stdcall* PFNGLBINDTEXTUREPROC)(GLenum target, GLuint texture);
typedef void(__stdcall* PFNGLBITMAPPROC)(GLsizei width, GLsizei height, GLfloat xorig, GLfloat yorig, GLfloat xmove, GLfloat ymove, const GLubyte* bitmap);
typedef void(__stdcall* PFNGLBLENDFUNCPROC)(GLenum sfactor, GLenum dfactor);
typedef void(__stdcall* PFNGLCALLLISTPROC)(GLuint list);
typedef void(__stdcall* PFNGLCALLLISTSPROC)(GLsizei n, GLenum type, const GLvoid* lists);
typedef void(__stdcall* PFNGLCLEARPROC)(GLbitfield mask);
typedef void(__stdcall* PFNGLCLEARACCUMPROC)(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);
typedef void(__stdcall* PFNGLCLEARCOLORPROC)(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
typedef void(__stdcall* PFNGLCLEARDEPTHPROC)(GLclampd depth);
typedef void(__stdcall* PFNGLCLEARINDEXPROC)(GLfloat c);
typedef void(__stdcall* PFNGLCLEARSTENCILPROC)(GLint s);
typedef void(__stdcall* PFNGLCLIPPLANEPROC)(GLenum plane, const GLdouble* equation);
typedef void(__stdcall* PFNGLCOLOR3BPROC)(GLbyte red, GLbyte green, GLbyte blue);
typedef void(__stdcall* PFNGLCOLOR3BVPROC)(const GLbyte* v);
typedef void(__stdcall* PFNGLCOLOR3DPROC)(GLdouble red, GLdouble green, GLdouble blue);
typedef void(__stdcall* PFNGLCOLOR3DVPROC)(const GLdouble* v);
typedef void(__stdcall* PFNGLCOLOR3FPROC)(GLfloat red, GLfloat green, GLfloat blue);
typedef void(__stdcall* PFNGLCOLOR3FVPROC)(const GLfloat* v);
typedef void(__stdcall* PFNGLCOLOR3IPROC)(GLint red, GLint green, GLint blue);
typedef void(__stdcall* PFNGLCOLOR3IVPROC)(const GLint* v);
typedef void(__stdcall* PFNGLCOLOR3SPROC)(GLshort red, GLshort green, GLshort blue);
typedef void(__stdcall* PFNGLCOLOR3SVPROC)(const GLshort* v);
typedef void(__stdcall* PFNGLCOLOR3UBPROC)(GLubyte red, GLubyte green, GLubyte blue);
typedef void(__stdcall* PFNGLCOLOR3UBVPROC)(const GLubyte* v);
typedef void(__stdcall* PFNGLCOLOR3UIPROC)(GLuint red, GLuint green, GLuint blue);
typedef void(__stdcall* PFNGLCOLOR3UIVPROC)(const GLuint* v);
typedef void(__stdcall* PFNGLCOLOR3USPROC)(GLushort red, GLushort green, GLushort blue);
typedef void(__stdcall* PFNGLCOLOR3USVPROC)(const GLushort* v);
typedef void(__stdcall* PFNGLCOLOR4BPROC)(GLbyte red, GLbyte green, GLbyte blue, GLbyte alpha);
typedef void(__stdcall* PFNGLCOLOR4BVPROC)(const GLbyte* v);
typedef void(__stdcall* PFNGLCOLOR4DPROC)(GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha);
typedef void(__stdcall* PFNGLCOLOR4DVPROC)(const GLdouble* v);
typedef void(__stdcall* PFNGLCOLOR4FPROC)(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);
typedef void(__stdcall* PFNGLCOLOR4FVPROC)(const GLfloat* v);
typedef void(__stdcall* PFNGLCOLOR4IPROC)(GLint red, GLint green, GLint blue, GLint alpha);
typedef void(__stdcall* PFNGLCOLOR4IVPROC)(const GLint* v);
typedef void(__stdcall* PFNGLCOLOR4SPROC)(GLshort red, GLshort green, GLshort blue, GLshort alpha);
typedef void(__stdcall* PFNGLCOLOR4SVPROC)(const GLshort* v);
typedef void(__stdcall* PFNGLCOLOR4UBPROC)(GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha);
typedef void(__stdcall* PFNGLCOLOR4UBVPROC)(const GLubyte* v);
typedef void(__stdcall* PFNGLCOLOR4UIPROC)(GLuint red, GLuint green, GLuint blue, GLuint alpha);
typedef void(__stdcall* PFNGLCOLOR4UIVPROC)(const GLuint* v);
typedef void(__stdcall* PFNGLCOLOR4USPROC)(GLushort red, GLushort green, GLushort blue, GLushort alpha);
typedef void(__stdcall* PFNGLCOLOR4USVPROC)(const GLushort* v);
typedef void(__stdcall* PFNGLCOLORMASKPROC)(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha);
typedef void(__stdcall* PFNGLCOLORMATERIALPROC)(GLenum face, GLenum mode);
typedef void(__stdcall* PFNGLCOLORPOINTERPROC)(GLint size, GLenum type, GLsizei stride, const GLvoid* pointer);
typedef void(__stdcall* PFNGLCOPYPIXELSPROC)(GLint x, GLint y, GLsizei width, GLsizei height, GLenum type);
typedef void(__stdcall* PFNGLCOPYTEXIMAGE1DPROC)(GLenum target, GLint level, GLenum internalFormat, GLint x, GLint y, GLsizei width, GLint border);
typedef void(__stdcall* PFNGLCOPYTEXIMAGE2DPROC)(GLenum target, GLint level, GLenum internalFormat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
typedef void(__stdcall* PFNGLCOPYTEXSUBIMAGE1DPROC)(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width);
typedef void(__stdcall* PFNGLCOPYTEXSUBIMAGE2DPROC)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
typedef void(__stdcall* PFNGLCULLFACEPROC)(GLenum mode);
typedef void(__stdcall* PFNGLDELETELISTSPROC)(GLuint list, GLsizei range);
typedef void(__stdcall* PFNGLDELETETEXTURESPROC)(GLsizei n, const GLuint* textures);
typedef void(__stdcall* PFNGLDEPTHFUNCPROC)(GLenum func);
typedef void(__stdcall* PFNGLDEPTHMASKPROC)(GLboolean flag);
typedef void(__stdcall* PFNGLDEPTHRANGEPROC)(GLclampd zNear, GLclampd zFar);
typedef void(__stdcall* PFNGLDISABLEPROC)(GLenum cap);
typedef void(__stdcall* PFNGLDISABLECLIENTSTATEPROC)(GLenum array);
typedef void(__stdcall* PFNGLDRAWARRAYSPROC)(GLenum mode, GLint first, GLsizei count);
typedef void(__stdcall* PFNGLDRAWBUFFERPROC)(GLenum mode);
typedef void(__stdcall* PFNGLDRAWELEMENTSPROC)(GLenum mode, GLsizei count, GLenum type, const GLvoid* indices);
typedef void(__stdcall* PFNGLDRAWPIXELSPROC)(GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid* pixels);
typedef void(__stdcall* PFNGLEDGEFLAGPROC)(GLboolean flag);
typedef void(__stdcall* PFNGLEDGEFLAGPOINTERPROC)(GLsizei stride, const GLvoid* pointer);
typedef void(__stdcall* PFNGLEDGEFLAGVPROC)(const GLboolean* flag);
typedef void(__stdcall* PFNGLENABLEPROC)(GLenum cap);
typedef void(__stdcall* PFNGLENABLECLIENTSTATEPROC)(GLenum array);
typedef void(__stdcall* PFNGLENDPROC)();
typedef void(__stdcall* PFNGLENDLISTPROC)();
typedef void(__stdcall* PFNGLEVALCOORD1DPROC)(GLdouble u);
typedef void(__stdcall* PFNGLEVALCOORD1DVPROC)(const GLdouble* u);
typedef void(__stdcall* PFNGLEVALCOORD1FPROC)(GLfloat u);
typedef void(__stdcall* PFNGLEVALCOORD1FVPROC)(const GLfloat* u);
typedef void(__stdcall* PFNGLEVALCOORD2DPROC)(GLdouble u, GLdouble v);
typedef void(__stdcall* PFNGLEVALCOORD2DVPROC)(const GLdouble* u);
typedef void(__stdcall* PFNGLEVALCOORD2FPROC)(GLfloat u, GLfloat v);
typedef void(__stdcall* PFNGLEVALCOORD2FVPROC)(const GLfloat* u);
typedef void(__stdcall* PFNGLEVALMESH1PROC)(GLenum mode, GLint i1, GLint i2);
typedef void(__stdcall* PFNGLEVALMESH2PROC)(GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2);
typedef void(__stdcall* PFNGLEVALPOINT1PROC)(GLint i);
typedef void(__stdcall* PFNGLEVALPOINT2PROC)(GLint i, GLint j);
typedef void(__stdcall* PFNGLFEEDBACKBUFFERPROC)(GLsizei size, GLenum type, GLfloat* buffer);
typedef void(__stdcall* PFNGLFINISHPROC)();
typedef void(__stdcall* PFNGLFLUSHPROC)();
typedef void(__stdcall* PFNGLFOGFPROC)(GLenum pname, GLfloat param);
typedef void(__stdcall* PFNGLFOGFVPROC)(GLenum pname, const GLfloat* params);
typedef void(__stdcall* PFNGLFOGIPROC)(GLenum pname, GLint param);
typedef void(__stdcall* PFNGLFOGIVPROC)(GLenum pname, const GLint* params);
typedef void(__stdcall* PFNGLFRONTFACEPROC)(GLenum mode);
typedef void(__stdcall* PFNGLFRUSTUMPROC)(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar);
typedef GLuint(__stdcall* PFNGLGENLISTSPROC)(GLsizei range);
typedef void(__stdcall* PFNGLGENTEXTURESPROC)(GLsizei n, GLuint* textures);
typedef void(__stdcall* PFNGLGETBOOLEANVPROC)(GLenum pname, GLboolean* params);
typedef void(__stdcall* PFNGLGETCLIPPLANEPROC)(GLenum plane, GLdouble* equation);
typedef void(__stdcall* PFNGLGETDOUBLEVPROC)(GLenum pname, GLdouble* params);
typedef GLenum(__stdcall* PFNGLGETERRORPROC)();
typedef void(__stdcall* PFNGLGETFLOATVPROC)(GLenum pname, GLfloat* params);
typedef void(__stdcall* PFNGLGETINTEGERVPROC)(GLenum pname, GLint* params);
typedef void(__stdcall* PFNGLGETLIGHTFVPROC)(GLenum light, GLenum pname, GLfloat* params);
typedef void(__stdcall* PFNGLGETLIGHTIVPROC)(GLenum light, GLenum pname, GLint* params);
typedef void(__stdcall* PFNGLGETMAPDVPROC)(GLenum target, GLenum query, GLdouble* v);
typedef void(__stdcall* PFNGLGETMAPFVPROC)(GLenum target, GLenum query, GLfloat* v);
typedef void(__stdcall* PFNGLGETMAPIVPROC)(GLenum target, GLenum query, GLint* v);
typedef void(__stdcall* PFNGLGETMATERIALFVPROC)(GLenum face, GLenum pname, GLfloat* params);
typedef void(__stdcall* PFNGLGETMATERIALIVPROC)(GLenum face, GLenum pname, GLint* params);
typedef void(__stdcall* PFNGLGETPIXELMAPFVPROC)(GLenum map, GLfloat* values);
typedef void(__stdcall* PFNGLGETPIXELMAPUIVPROC)(GLenum map, GLuint* values);
typedef void(__stdcall* PFNGLGETPIXELMAPUSVPROC)(GLenum map, GLushort* values);
typedef void(__stdcall* PFNGLGETPOINTERVPROC)(GLenum pname, GLvoid** params);
typedef void(__stdcall* PFNGLGETPOLYGONSTIPPLEPROC)(GLubyte* mask);
typedef const GLubyte*(__stdcall* PFNGLGETSTRINGPROC)(GLenum name);
typedef void(__stdcall* PFNGLGETTEXENVFVPROC)(GLenum target, GLenum pname, GLfloat* params);
typedef void(__stdcall* PFNGLGETTEXENVIVPROC)(GLenum target, GLenum pname, GLint* params);
typedef void(__stdcall* PFNGLGETTEXGENDVPROC)(GLenum coord, GLenum pname, GLdouble* params);
typedef void(__stdcall* PFNGLGETTEXGENFVPROC)(GLenum coord, GLenum pname, GLfloat* params);
typedef void(__stdcall* PFNGLGETTEXGENIVPROC)(GLenum coord, GLenum pname, GLint* params);
typedef void(__stdcall* PFNGLGETTEXIMAGEPROC)(GLenum target, GLint level, GLenum format, GLenum type, GLvoid* pixels);
typedef void(__stdcall* PFNGLGETTEXLEVELPARAMETERFVPROC)(GLenum target, GLint level, GLenum pname, GLfloat* params);
typedef void(__stdcall* PFNGLGETTEXLEVELPARAMETERIVPROC)(GLenum target, GLint level, GLenum pname, GLint* params);
typedef void(__stdcall* PFNGLGETTEXPARAMETERFVPROC)(GLenum target, GLenum pname, GLfloat* params);
typedef void(__stdcall* PFNGLGETTEXPARAMETERIVPROC)(GLenum target, GLenum pname, GLint* params);
typedef void(__stdcall* PFNGLHINTPROC)(GLenum target, GLenum mode);
typedef void(__stdcall* PFNGLINDEXMASKPROC)(GLuint mask);
typedef void(__stdcall* PFNGLINDEXPOINTERPROC)(GLenum type, GLsizei stride, const GLvoid* pointer);
typedef void(__stdcall* PFNGLINDEXDPROC)(GLdouble c);
typedef void(__stdcall* PFNGLINDEXDVPROC)(const GLdouble* c);
typedef void(__stdcall* PFNGLINDEXFPROC)(GLfloat c);
typedef void(__stdcall* PFNGLINDEXFVPROC)(const GLfloat* c);
typedef void(__stdcall* PFNGLINDEXIPROC)(GLint c);
typedef void(__stdcall* PFNGLINDEXIVPROC)(const GLint* c);
typedef void(__stdcall* PFNGLINDEXSPROC)(GLshort c);
typedef void(__stdcall* PFNGLINDEXSVPROC)(const GLshort* c);
typedef void(__stdcall* PFNGLINDEXUBPROC)(GLubyte c);
typedef void(__stdcall* PFNGLINDEXUBVPROC)(const GLubyte* c);
typedef void(__stdcall* PFNGLINITNAMESPROC)();
typedef void(__stdcall* PFNGLINTERLEAVEDARRAYSPROC)(GLenum format, GLsizei stride, const GLvoid* pointer);
typedef GLboolean(__stdcall* PFNGLISENABLEDPROC)(GLenum cap);
typedef GLboolean(__stdcall* PFNGLISLISTPROC)(GLuint list);
typedef GLboolean(__stdcall* PFNGLISTEXTUREPROC)(GLuint texture);
typedef void(__stdcall* PFNGLLIGHTMODELFPROC)(GLenum pname, GLfloat param);
typedef void(__stdcall* PFNGLLIGHTMODELFVPROC)(GLenum pname, const GLfloat* params);
typedef void(__stdcall* PFNGLLIGHTMODELIPROC)(GLenum pname, GLint param);
typedef void(__stdcall* PFNGLLIGHTMODELIVPROC)(GLenum pname, const GLint* params);
typedef void(__stdcall* PFNGLLIGHTFPROC)(GLenum light, GLenum pname, GLfloat param);
typedef void(__stdcall* PFNGLLIGHTFVPROC)(GLenum light, GLenum pname, const GLfloat* params);
typedef void(__stdcall* PFNGLLIGHTIPROC)(GLenum light, GLenum pname, GLint param);
typedef void(__stdcall* PFNGLLIGHTIVPROC)(GLenum light, GLenum pname, const GLint* params);
typedef void(__stdcall* PFNGLLINESTIPPLEPROC)(GLint factor, GLushort pattern);
typedef void(__stdcall* PFNGLLINEWIDTHPROC)(GLfloat width);
typedef void(__stdcall* PFNGLLISTBASEPROC)(GLuint base);
typedef void(__stdcall* PFNGLLOADIDENTITYPROC)();
typedef void(__stdcall* PFNGLLOADMATRIXDPROC)(const GLdouble* m);
typedef void(__stdcall* PFNGLLOADMATRIXFPROC)(const GLfloat* m);
typedef void(__stdcall* PFNGLLOADNAMEPROC)(GLuint name);
typedef void(__stdcall* PFNGLLOGICOPPROC)(GLenum opcode);
typedef void(__stdcall* PFNGLMAP1DPROC)(GLenum target, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble* points);
typedef void(__stdcall* PFNGLMAP1FPROC)(GLenum target, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat* points);
typedef void(__stdcall* PFNGLMAP2DPROC)(GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble* points);
typedef void(__stdcall* PFNGLMAP2FPROC)(GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat* points);
typedef void(__stdcall* PFNGLMAPGRID1DPROC)(GLint un, GLdouble u1, GLdouble u2);
typedef void(__stdcall* PFNGLMAPGRID1FPROC)(GLint un, GLfloat u1, GLfloat u2);
typedef void(__stdcall* PFNGLMAPGRID2DPROC)(GLint un, GLdouble u1, GLdouble u2, GLint vn, GLdouble v1, GLdouble v2);
typedef void(__stdcall* PFNGLMAPGRID2FPROC)(GLint un, GLfloat u1, GLfloat u2, GLint vn, GLfloat v1, GLfloat v2);
typedef void(__stdcall* PFNGLMATERIALFPROC)(GLenum face, GLenum pname, GLfloat param);
typedef void(__stdcall* PFNGLMATERIALFVPROC)(GLenum face, GLenum pname, const GLfloat* params);
typedef void(__stdcall* PFNGLMATERIALIPROC)(GLenum face, GLenum pname, GLint param);
typedef void(__stdcall* PFNGLMATERIALIVPROC)(GLenum face, GLenum pname, const GLint* params);
typedef void(__stdcall* PFNGLMATRIXMODEPROC)(GLenum mode);
typedef void(__stdcall* PFNGLMULTMATRIXDPROC)(const GLdouble* m);
typedef void(__stdcall* PFNGLMULTMATRIXFPROC)(const GLfloat* m);
typedef void(__stdcall* PFNGLNEWLISTPROC)(GLuint list, GLenum mode);
typedef void(__stdcall* PFNGLNORMAL3BPROC)(GLbyte nx, GLbyte ny, GLbyte nz);
typedef void(__stdcall* PFNGLNORMAL3BVPROC)(const GLbyte* v);
typedef void(__stdcall* PFNGLNORMAL3DPROC)(GLdouble nx, GLdouble ny, GLdouble nz);
typedef void(__stdcall* PFNGLNORMAL3DVPROC)(const GLdouble* v);
typedef void(__stdcall* PFNGLNORMAL3FPROC)(GLfloat nx, GLfloat ny, GLfloat nz);
typedef void(__stdcall* PFNGLNORMAL3FVPROC)(const GLfloat* v);
typedef void(__stdcall* PFNGLNORMAL3IPROC)(GLint nx, GLint ny, GLint nz);
typedef void(__stdcall* PFNGLNORMAL3IVPROC)(const GLint* v);
typedef void(__stdcall* PFNGLNORMAL3SPROC)(GLshort nx, GLshort ny, GLshort nz);
typedef void(__stdcall* PFNGLNORMAL3SVPROC)(const GLshort* v);
typedef void(__stdcall* PFNGLNORMALPOINTERPROC)(GLenum type, GLsizei stride, const GLvoid* pointer);
typedef void(__stdcall* PFNGLORTHOPROC)(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar);
typedef void(__stdcall* PFNGLPASSTHROUGHPROC)(GLfloat token);
typedef void(__stdcall* PFNGLPIXELMAPFVPROC)(GLenum map, GLsizei mapsize, const GLfloat* values);
typedef void(__stdcall* PFNGLPIXELMAPUIVPROC)(GLenum map, GLsizei mapsize, const GLuint* values);
typedef void(__stdcall* PFNGLPIXELMAPUSVPROC)(GLenum map, GLsizei mapsize, const GLushort* values);
typedef void(__stdcall* PFNGLPIXELSTOREFPROC)(GLenum pname, GLfloat param);
typedef void(__stdcall* PFNGLPIXELSTOREIPROC)(GLenum pname, GLint param);
typedef void(__stdcall* PFNGLPIXELTRANSFERFPROC)(GLenum pname, GLfloat param);
typedef void(__stdcall* PFNGLPIXELTRANSFERIPROC)(GLenum pname, GLint param);
typedef void(__stdcall* PFNGLPIXELZOOMPROC)(GLfloat xfactor, GLfloat yfactor);
typedef void(__stdcall* PFNGLPOINTSIZEPROC)(GLfloat size);
typedef void(__stdcall* PFNGLPOLYGONMODEPROC)(GLenum face, GLenum mode);
typedef void(__stdcall* PFNGLPOLYGONOFFSETPROC)(GLfloat factor, GLfloat units);
typedef void(__stdcall* PFNGLPOLYGONSTIPPLEPROC)(const GLubyte* mask);
typedef void(__stdcall* PFNGLPOPATTRIBPROC)();
typedef void(__stdcall* PFNGLPOPCLIENTATTRIBPROC)();
typedef void(__stdcall* PFNGLPOPMATRIXPROC)();
typedef void(__stdcall* PFNGLPOPNAMEPROC)();
typedef void(__stdcall* PFNGLPRIORITIZETEXTURESPROC)(GLsizei n, const GLuint* textures, const GLclampf* priorities);
typedef void(__stdcall* PFNGLPUSHATTRIBPROC)(GLbitfield mask);
typedef void(__stdcall* PFNGLPUSHCLIENTATTRIBPROC)(GLbitfield mask);
typedef void(__stdcall* PFNGLPUSHMATRIXPROC)();
typedef void(__stdcall* PFNGLPUSHNAMEPROC)(GLuint name);
typedef void(__stdcall* PFNGLRASTERPOS2DPROC)(GLdouble x, GLdouble y);
typedef void(__stdcall* PFNGLRASTERPOS2DVPROC)(const GLdouble* v);
typedef void(__stdcall* PFNGLRASTERPOS2FPROC)(GLfloat x, GLfloat y);
typedef void(__stdcall* PFNGLRASTERPOS2FVPROC)(const GLfloat* v);
typedef void(__stdcall* PFNGLRASTERPOS2IPROC)(GLint x, GLint y);
typedef void(__stdcall* PFNGLRASTERPOS2IVPROC)(const GLint* v);
typedef void(__stdcall* PFNGLRASTERPOS2SPROC)(GLshort x, GLshort y);
typedef void(__stdcall* PFNGLRASTERPOS2SVPROC)(const GLshort* v);
typedef void(__stdcall* PFNGLRASTERPOS3DPROC)(GLdouble x, GLdouble y, GLdouble z);
typedef void(__stdcall* PFNGLRASTERPOS3DVPROC)(const GLdouble* v);
typedef void(__stdcall* PFNGLRASTERPOS3FPROC)(GLfloat x, GLfloat y, GLfloat z);
typedef void(__stdcall* PFNGLRASTERPOS3FVPROC)(const GLfloat* v);
typedef void(__stdcall* PFNGLRASTERPOS3IPROC)(GLint x, GLint y, GLint z);
typedef void(__stdcall* PFNGLRASTERPOS3IVPROC)(const GLint* v);
typedef void(__stdcall* PFNGLRASTERPOS3SPROC)(GLshort x, GLshort y, GLshort z);
typedef void(__stdcall* PFNGLRASTERPOS3SVPROC)(const GLshort* v);
typedef void(__stdcall* PFNGLRASTERPOS4DPROC)(GLdouble x, GLdouble y, GLdouble z, GLdouble w);
typedef void(__stdcall* PFNGLRASTERPOS4DVPROC)(const GLdouble* v);
typedef void(__stdcall* PFNGLRASTERPOS4FPROC)(GLfloat x, GLfloat y, GLfloat z, GLfloat w);
typedef void(__stdcall* PFNGLRASTERPOS4FVPROC)(const GLfloat* v);
typedef void(__stdcall* PFNGLRASTERPOS4IPROC)(GLint x, GLint y, GLint z, GLint w);
typedef void(__stdcall* PFNGLRASTERPOS4IVPROC)(const GLint* v);
typedef void(__stdcall* PFNGLRASTERPOS4SPROC)(GLshort x, GLshort y, GLshort z, GLshort w);
typedef void(__stdcall* PFNGLRASTERPOS4SVPROC)(const GLshort* v);
typedef void(__stdcall* PFNGLREADBUFFERPROC)(GLenum mode);
typedef void(__stdcall* PFNGLREADPIXELSPROC)(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid* pixels);
typedef void(__stdcall* PFNGLRECTDPROC)(GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2);
typedef void(__stdcall* PFNGLRECTDVPROC)(const GLdouble* v1, const GLdouble* v2);
typedef void(__stdcall* PFNGLRECTFPROC)(GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2);
typedef void(__stdcall* PFNGLRECTFVPROC)(const GLfloat* v1, const GLfloat* v2);
typedef void(__stdcall* PFNGLRECTIPROC)(GLint x1, GLint y1, GLint x2, GLint y2);
typedef void(__stdcall* PFNGLRECTIVPROC)(const GLint* v1, const GLint* v2);
typedef void(__stdcall* PFNGLRECTSPROC)(GLshort x1, GLshort y1, GLshort x2, GLshort y2);
typedef void(__stdcall* PFNGLRECTSVPROC)(const GLshort* v1, const GLshort* v2);
typedef GLint(__stdcall* PFNGLRENDERMODEPROC)(GLenum mode);
typedef void(__stdcall* PFNGLROTATEDPROC)(GLdouble angle, GLdouble x, GLdouble y, GLdouble z);
typedef void(__stdcall* PFNGLROTATEFPROC)(GLfloat angle, GLfloat x, GLfloat y, GLfloat z);
typedef void(__stdcall* PFNGLSCALEDPROC)(GLdouble x, GLdouble y, GLdouble z);
typedef void(__stdcall* PFNGLSCALEFPROC)(GLfloat x, GLfloat y, GLfloat z);
typedef void(__stdcall* PFNGLSCISSORPROC)(GLint x, GLint y, GLsizei width, GLsizei height);
typedef void(__stdcall* PFNGLSELECTBUFFERPROC)(GLsizei size, GLuint* buffer);
typedef void(__stdcall* PFNGLSHADEMODELPROC)(GLenum mode);
typedef void(__stdcall* PFNGLSTENCILFUNCPROC)(GLenum func, GLint ref, GLuint mask);
typedef void(__stdcall* PFNGLSTENCILMASKPROC)(GLuint mask);
typedef void(__stdcall* PFNGLSTENCILOPPROC)(GLenum fail, GLenum zfail, GLenum zpass);
typedef void(__stdcall* PFNGLTEXCOORD1DPROC)(GLdouble s);
typedef void(__stdcall* PFNGLTEXCOORD1DVPROC)(const GLdouble* v);
typedef void(__stdcall* PFNGLTEXCOORD1FPROC)(GLfloat s);
typedef void(__stdcall* PFNGLTEXCOORD1FVPROC)(const GLfloat* v);
typedef void(__stdcall* PFNGLTEXCOORD1IPROC)(GLint s);
typedef void(__stdcall* PFNGLTEXCOORD1IVPROC)(const GLint* v);
typedef void(__stdcall* PFNGLTEXCOORD1SPROC)(GLshort s);
typedef void(__stdcall* PFNGLTEXCOORD1SVPROC)(const GLshort* v);
typedef void(__stdcall* PFNGLTEXCOORD2DPROC)(GLdouble s, GLdouble t);
typedef void(__stdcall* PFNGLTEXCOORD2DVPROC)(const GLdouble* v);
typedef void(__stdcall* PFNGLTEXCOORD2FPROC)(GLfloat s, GLfloat t);
typedef void(__stdcall* PFNGLTEXCOORD2FVPROC)(const GLfloat* v);
typedef void(__stdcall* PFNGLTEXCOORD2IPROC)(GLint s, GLint t);
typedef void(__stdcall* PFNGLTEXCOORD2IVPROC)(const GLint* v);
typedef void(__stdcall* PFNGLTEXCOORD2SPROC)(GLshort s, GLshort t);
typedef void(__stdcall* PFNGLTEXCOORD2SVPROC)(const GLshort* v);
typedef void(__stdcall* PFNGLTEXCOORD3DPROC)(GLdouble s, GLdouble t, GLdouble r);
typedef void(__stdcall* PFNGLTEXCOORD3DVPROC)(const GLdouble* v);
typedef void(__stdcall* PFNGLTEXCOORD3FPROC)(GLfloat s, GLfloat t, GLfloat r);
typedef void(__stdcall* PFNGLTEXCOORD3FVPROC)(const GLfloat* v);
typedef void(__stdcall* PFNGLTEXCOORD3IPROC)(GLint s, GLint t, GLint r);
typedef void(__stdcall* PFNGLTEXCOORD3IVPROC)(const GLint* v);
typedef void(__stdcall* PFNGLTEXCOORD3SPROC)(GLshort s, GLshort t, GLshort r);
typedef void(__stdcall* PFNGLTEXCOORD3SVPROC)(const GLshort* v);
typedef void(__stdcall* PFNGLTEXCOORD4DPROC)(GLdouble s, GLdouble t, GLdouble r, GLdouble q);
typedef void(__stdcall* PFNGLTEXCOORD4DVPROC)(const GLdouble* v);
typedef void(__stdcall* PFNGLTEXCOORD4FPROC)(GLfloat s, GLfloat t, GLfloat r, GLfloat q);
typedef void(__stdcall* PFNGLTEXCOORD4FVPROC)(const GLfloat* v);
typedef void(__stdcall* PFNGLTEXCOORD4IPROC)(GLint s, GLint t, GLint r, GLint q);
typedef void(__stdcall* PFNGLTEXCOORD4IVPROC)(const GLint* v);
typedef void(__stdcall* PFNGLTEXCOORD4SPROC)(GLshort s, GLshort t, GLshort r, GLshort q);
typedef void(__stdcall* PFNGLTEXCOORD4SVPROC)(const GLshort* v);
typedef void(__stdcall* PFNGLTEXCOORDPOINTERPROC)(GLint size, GLenum type, GLsizei stride, const GLvoid* pointer);
typedef void(__stdcall* PFNGLTEXENVFPROC)(GLenum target, GLenum pname, GLfloat param);
typedef void(__stdcall* PFNGLTEXENVFVPROC)(GLenum target, GLenum pname, const GLfloat* params);
typedef void(__stdcall* PFNGLTEXENVIPROC)(GLenum target, GLenum pname, GLint param);
typedef void(__stdcall* PFNGLTEXENVIVPROC)(GLenum target, GLenum pname, const GLint* params);
typedef void(__stdcall* PFNGLTEXGENDPROC)(GLenum coord, GLenum pname, GLdouble param);
typedef void(__stdcall* PFNGLTEXGENDVPROC)(GLenum coord, GLenum pname, const GLdouble* params);
typedef void(__stdcall* PFNGLTEXGENFPROC)(GLenum coord, GLenum pname, GLfloat param);
typedef void(__stdcall* PFNGLTEXGENFVPROC)(GLenum coord, GLenum pname, const GLfloat* params);
typedef void(__stdcall* PFNGLTEXGENIPROC)(GLenum coord, GLenum pname, GLint param);
typedef void(__stdcall* PFNGLTEXGENIVPROC)(GLenum coord, GLenum pname, const GLint* params);
typedef void(__stdcall* PFNGLTEXIMAGE1DPROC)(GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid* pixels);
typedef void(__stdcall* PFNGLTEXIMAGE2DPROC)(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid* pixels);
typedef void(__stdcall* PFNGLTEXPARAMETERFPROC)(GLenum target, GLenum pname, GLfloat param);
typedef void(__stdcall* PFNGLTEXPARAMETERFVPROC)(GLenum target, GLenum pname, const GLfloat* params);
typedef void(__stdcall* PFNGLTEXPARAMETERIPROC)(GLenum target, GLenum pname, GLint param);
typedef void(__stdcall* PFNGLTEXPARAMETERIVPROC)(GLenum target, GLenum pname, const GLint* params);
typedef void(__stdcall* PFNGLTEXSUBIMAGE1DPROC)(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid* pixels);
typedef void(__stdcall* PFNGLTEXSUBIMAGE2DPROC)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid* pixels);
typedef void(__stdcall* PFNGLTRANSLATEDPROC)(GLdouble x, GLdouble y, GLdouble z);
typedef void(__stdcall* PFNGLTRANSLATEFPROC)(GLfloat x, GLfloat y, GLfloat z);
typedef void(__stdcall* PFNGLVERTEX2DPROC)(GLdouble x, GLdouble y);
typedef void(__stdcall* PFNGLVERTEX2DVPROC)(const GLdouble* v);
typedef void(__stdcall* PFNGLVERTEX2FPROC)(GLfloat x, GLfloat y);
typedef void(__stdcall* PFNGLVERTEX2FVPROC)(const GLfloat* v);
typedef void(__stdcall* PFNGLVERTEX2IPROC)(GLint x, GLint y);
typedef void(__stdcall* PFNGLVERTEX2IVPROC)(const GLint* v);
typedef void(__stdcall* PFNGLVERTEX2SPROC)(GLshort x, GLshort y);
typedef void(__stdcall* PFNGLVERTEX2SVPROC)(const GLshort* v);
typedef void(__stdcall* PFNGLVERTEX3DPROC)(GLdouble x, GLdouble y, GLdouble z);
typedef void(__stdcall* PFNGLVERTEX3DVPROC)(const GLdouble* v);
typedef void(__stdcall* PFNGLVERTEX3FPROC)(GLfloat x, GLfloat y, GLfloat z);
typedef void(__stdcall* PFNGLVERTEX3FVPROC)(const GLfloat* v);
typedef void(__stdcall* PFNGLVERTEX3IPROC)(GLint x, GLint y, GLint z);
typedef void(__stdcall* PFNGLVERTEX3IVPROC)(const GLint* v);
typedef void(__stdcall* PFNGLVERTEX3SPROC)(GLshort x, GLshort y, GLshort z);
typedef void(__stdcall* PFNGLVERTEX3SVPROC)(const GLshort* v);
typedef void(__stdcall* PFNGLVERTEX4DPROC)(GLdouble x, GLdouble y, GLdouble z, GLdouble w);
typedef void(__stdcall* PFNGLVERTEX4DVPROC)(const GLdouble* v);
typedef void(__stdcall* PFNGLVERTEX4FPROC)(GLfloat x, GLfloat y, GLfloat z, GLfloat w);
typedef void(__stdcall* PFNGLVERTEX4FVPROC)(const GLfloat* v);
typedef void(__stdcall* PFNGLVERTEX4IPROC)(GLint x, GLint y, GLint z, GLint w);
typedef void(__stdcall* PFNGLVERTEX4IVPROC)(const GLint* v);
typedef void(__stdcall* PFNGLVERTEX4SPROC)(GLshort x, GLshort y, GLshort z, GLshort w);
typedef void(__stdcall* PFNGLVERTEX4SVPROC)(const GLshort* v);
typedef void(__stdcall* PFNGLVERTEXPOINTERPROC)(GLint size, GLenum type, GLsizei stride, const GLvoid* pointer);
typedef void(__stdcall* PFNGLVIEWPORTPROC)(GLint x, GLint y, GLsizei width, GLsizei height);
typedef void(__stdcall* PFNGLUBEGINCURVEPROC)(GLUnurbs* nobj);
typedef void(__stdcall* PFNGLUBEGINPOLYGONPROC)(GLUtesselator* tess);
typedef void(__stdcall* PFNGLUBEGINSURFACEPROC)(GLUnurbs* nobj);
typedef void(__stdcall* PFNGLUBEGINTRIMPROC)(GLUnurbs* nobj);
typedef int(__stdcall* PFNGLUBUILD1DMIPMAPSPROC)(GLenum target, GLint components, GLint width, GLenum format, GLenum type, const void* data);
typedef int(__stdcall* PFNGLUBUILD2DMIPMAPSPROC)(GLenum target, GLint components, GLint width, GLint height, GLenum format, GLenum type, const void* data);
typedef void(__stdcall* PFNGLUCYLINDERPROC)(GLUquadric* qobj, GLdouble baseRadius, GLdouble topRadius, GLdouble height, GLint slices, GLint stacks);
typedef void(__stdcall* PFNGLUDELETENURBSRENDERERPROC)(GLUnurbs* nobj);
typedef void(__stdcall* PFNGLUDELETEQUADRICPROC)(GLUquadric* state);
typedef void(__stdcall* PFNGLUDELETETESSPROC)(GLUtesselator* tess);
typedef void(__stdcall* PFNGLUDISKPROC)(GLUquadric* qobj, GLdouble innerRadius, GLdouble outerRadius, GLint slices, GLint loops);
typedef void(__stdcall* PFNGLUENDCURVEPROC)(GLUnurbs* nobj);
typedef void(__stdcall* PFNGLUENDPOLYGONPROC)(GLUtesselator* tess);
typedef void(__stdcall* PFNGLUENDSURFACEPROC)(GLUnurbs* nobj);
typedef void(__stdcall* PFNGLUENDTRIMPROC)(GLUnurbs* nobj);
typedef const GLubyte*(__stdcall* PFNGLUERRORSTRINGPROC)(GLenum errCode);
typedef void(__stdcall* PFNGLUGETNURBSPROPERTYPROC)(GLUnurbs* nobj, GLenum property, GLfloat* value);
typedef const GLubyte*(__stdcall* PFNGLUGETSTRINGPROC)(GLenum name);
typedef void(__stdcall* PFNGLUGETTESSPROPERTYPROC)(GLUtesselator* tess, GLenum which, GLdouble* value);
typedef void(__stdcall* PFNGLULOADSAMPLINGMATRICESPROC)(GLUnurbs* nobj, const GLfloat modelMatrix[16], const GLfloat projMatrix[16], const GLint viewport[4]);
typedef void(__stdcall* PFNGLULOOKATPROC)(GLdouble eyex, GLdouble eyey, GLdouble eyez, GLdouble centerx, GLdouble centery, GLdouble centerz, GLdouble upx, GLdouble upy, GLdouble upz);
typedef GLUnurbs*(__stdcall* PFNGLUNEWNURBSRENDERERPROC)();
typedef GLUquadric*(__stdcall* PFNGLUNEWQUADRICPROC)();
typedef GLUtesselator*(__stdcall* PFNGLUNEWTESSPROC)();
typedef void(__stdcall* PFNGLUNEXTCONTOURPROC)(GLUtesselator* tess, GLenum type);
typedef void(__stdcall* PFNGLUNURBSCALLBACKPROC)(GLUnurbs* nobj, GLenum which, void* (*fn)());
typedef void(__stdcall* PFNGLUNURBSCURVEPROC)(GLUnurbs* nobj, GLint nknots, GLfloat* knot, GLint stride, GLfloat* ctlarray, GLint order, GLenum type);
typedef void(__stdcall* PFNGLUNURBSPROPERTYPROC)(GLUnurbs* nobj, GLenum property, GLfloat value);
typedef void(__stdcall* PFNGLUNURBSSURFACEPROC)(GLUnurbs* nobj, GLint sknot_count, float* sknot, GLint tknot_count, GLfloat* tknot, GLint s_stride, GLint t_stride, GLfloat* ctlarray, GLint sorder, GLint torder, GLenum type);
typedef void(__stdcall* PFNGLUORTHO2DPROC)(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top);
typedef void(__stdcall* PFNGLUPARTIALDISKPROC)(GLUquadric* qobj, GLdouble innerRadius, GLdouble outerRadius, GLint slices, GLint loops, GLdouble startAngle, GLdouble sweepAngle);
typedef void(__stdcall* PFNGLUPERSPECTIVEPROC)(GLdouble fovy, GLdouble aspect, GLdouble zNear, GLdouble zFar);
typedef void(__stdcall* PFNGLUPICKMATRIXPROC)(GLdouble x, GLdouble y, GLdouble width, GLdouble height, GLint viewport[4]);
typedef int(__stdcall* PFNGLUPROJECTPROC)(GLdouble objx, GLdouble objy, GLdouble objz, const GLdouble modelMatrix[16], const GLdouble projMatrix[16], const GLint viewport[4], GLdouble* winx, GLdouble* winy, GLdouble* winz);
typedef void(__stdcall* PFNGLUPWLCURVEPROC)(GLUnurbs* nobj, GLint count, GLfloat* array, GLint stride, GLenum type);
typedef void(__stdcall* PFNGLUQUADRICCALLBACKPROC)(GLUquadric* qobj, GLenum which, void* (*fn)());
typedef void(__stdcall* PFNGLUQUADRICDRAWSTYLEPROC)(GLUquadric* quadObject, GLenum drawStyle);
typedef void(__stdcall* PFNGLUQUADRICNORMALSPROC)(GLUquadric* quadObject, GLenum normals);
typedef void(__stdcall* PFNGLUQUADRICORIENTATIONPROC)(GLUquadric* quadObject, GLenum orientation);
typedef void(__stdcall* PFNGLUQUADRICTEXTUREPROC)(GLUquadric* quadObject, GLboolean textureCoords);
typedef int(__stdcall* PFNGLUSCALEIMAGEPROC)(GLenum format, GLint widthin, GLint heightin, GLenum typein, const void* datain, GLint widthout, GLint heightout, GLenum typeout, void* dataout);
typedef void(__stdcall* PFNGLUSPHEREPROC)(GLUquadric* qobj, GLdouble radius, GLint slices, GLint stacks);
typedef void(__stdcall* PFNGLUTESSBEGINCONTOURPROC)(GLUtesselator* tess);
typedef void(__stdcall* PFNGLUTESSBEGINPOLYGONPROC)(GLUtesselator* tess, void* polygon_data);
typedef void(__stdcall* PFNGLUTESSCALLBACKPROC)(GLUtesselator* tess, GLenum which, void* (*fn)());
typedef void(__stdcall* PFNGLUTESSENDCONTOURPROC)(GLUtesselator* tess);
typedef void(__stdcall* PFNGLUTESSENDPOLYGONPROC)(GLUtesselator* tess);
typedef void(__stdcall* PFNGLUTESSNORMALPROC)(GLUtesselator* tess, GLdouble x, GLdouble y, GLdouble z);
typedef void(__stdcall* PFNGLUTESSPROPERTYPROC)(GLUtesselator* tess, GLenum which, GLdouble value);
typedef void(__stdcall* PFNGLUTESSVERTEXPROC)(GLUtesselator* tess, GLdouble coords[3], void* data);
typedef int(__stdcall* PFNGLUUNPROJECTPROC)(GLdouble winx, GLdouble winy, GLdouble winz, const GLdouble modelMatrix[16], const GLdouble projMatrix[16], const GLint viewport[4], GLdouble* objx, GLdouble* objy, GLdouble* objz);

// NOTE: I'm not exactly sure how these GL function pointers were organized in
// the original code.
class CVideo3d {
public:
    static const float SUB_PIXEL_SHIFT;

    static PFNGLACCUMPROC glAccum;
    static PFNGLALPHAFUNCPROC glAlphaFunc;
    static PFNGLARETEXTURESRESIDENTPROC glAreTexturesResident;
    static PFNGLARRAYELEMENTPROC glArrayElement;
    static PFNGLBEGINPROC glBegin;
    static PFNGLBINDTEXTUREPROC glBindTexture;
    static PFNGLBITMAPPROC glBitmap;
    static PFNGLBLENDFUNCPROC glBlendFunc;
    static PFNGLCALLLISTPROC glCallList;
    static PFNGLCALLLISTSPROC glCallLists;
    static PFNGLCLEARPROC glClear;
    static PFNGLCLEARACCUMPROC glClearAccum;
    static PFNGLCLEARCOLORPROC glClearColor;
    static PFNGLCLEARDEPTHPROC glClearDepth;
    static PFNGLCLEARINDEXPROC glClearIndex;
    static PFNGLCLEARSTENCILPROC glClearStencil;
    static PFNGLCLIPPLANEPROC glClipPlane;
    static PFNGLCOLOR3BPROC glColor3b;
    static PFNGLCOLOR3BVPROC glColor3bv;
    static PFNGLCOLOR3DPROC glColor3d;
    static PFNGLCOLOR3DVPROC glColor3dv;
    static PFNGLCOLOR3FPROC glColor3f;
    static PFNGLCOLOR3FVPROC glColor3fv;
    static PFNGLCOLOR3IPROC glColor3i;
    static PFNGLCOLOR3IVPROC glColor3iv;
    static PFNGLCOLOR3SPROC glColor3s;
    static PFNGLCOLOR3SVPROC glColor3sv;
    static PFNGLCOLOR3UBPROC glColor3ub;
    static PFNGLCOLOR3UBVPROC glColor3ubv;
    static PFNGLCOLOR3UIPROC glColor3ui;
    static PFNGLCOLOR3UIVPROC glColor3uiv;
    static PFNGLCOLOR3USPROC glColor3us;
    static PFNGLCOLOR3USVPROC glColor3usv;
    static PFNGLCOLOR4BPROC glColor4b;
    static PFNGLCOLOR4BVPROC glColor4bv;
    static PFNGLCOLOR4DPROC glColor4d;
    static PFNGLCOLOR4DVPROC glColor4dv;
    static PFNGLCOLOR4FPROC glColor4f;
    static PFNGLCOLOR4FVPROC glColor4fv;
    static PFNGLCOLOR4IPROC glColor4i;
    static PFNGLCOLOR4IVPROC glColor4iv;
    static PFNGLCOLOR4SPROC glColor4s;
    static PFNGLCOLOR4SVPROC glColor4sv;
    static PFNGLCOLOR4UBPROC glColor4ub;
    static PFNGLCOLOR4UBVPROC glColor4ubv;
    static PFNGLCOLOR4UIPROC glColor4ui;
    static PFNGLCOLOR4UIVPROC glColor4uiv;
    static PFNGLCOLOR4USPROC glColor4us;
    static PFNGLCOLOR4USVPROC glColor4usv;
    static PFNGLCOLORMASKPROC glColorMask;
    static PFNGLCOLORMATERIALPROC glColorMaterial;
    static PFNGLCOLORPOINTERPROC glColorPointer;
    static PFNGLCOPYPIXELSPROC glCopyPixels;
    static PFNGLCOPYTEXIMAGE1DPROC glCopyTexImage1D;
    static PFNGLCOPYTEXIMAGE2DPROC glCopyTexImage2D;
    static PFNGLCOPYTEXSUBIMAGE1DPROC glCopyTexSubImage1D;
    static PFNGLCOPYTEXSUBIMAGE2DPROC glCopyTexSubImage2D;
    static PFNGLCULLFACEPROC glCullFace;
    static PFNGLDELETELISTSPROC glDeleteLists;
    static PFNGLDELETETEXTURESPROC glDeleteTextures;
    static PFNGLDEPTHFUNCPROC glDepthFunc;
    static PFNGLDEPTHMASKPROC glDepthMask;
    static PFNGLDEPTHRANGEPROC glDepthRange;
    static PFNGLDISABLEPROC glDisable;
    static PFNGLDISABLECLIENTSTATEPROC glDisableClientState;
    static PFNGLDRAWARRAYSPROC glDrawArrays;
    static PFNGLDRAWBUFFERPROC glDrawBuffer;
    static PFNGLDRAWELEMENTSPROC glDrawElements;
    static PFNGLDRAWPIXELSPROC glDrawPixels;
    static PFNGLEDGEFLAGPROC glEdgeFlag;
    static PFNGLEDGEFLAGPOINTERPROC glEdgeFlagPointer;
    static PFNGLEDGEFLAGVPROC glEdgeFlagv;
    static PFNGLENABLEPROC glEnable;
    static PFNGLENABLECLIENTSTATEPROC glEnableClientState;
    static PFNGLENDPROC glEnd;
    static PFNGLENDLISTPROC glEndList;
    static PFNGLEVALCOORD1DPROC glEvalCoord1d;
    static PFNGLEVALCOORD1DVPROC glEvalCoord1dv;
    static PFNGLEVALCOORD1FPROC glEvalCoord1f;
    static PFNGLEVALCOORD1FVPROC glEvalCoord1fv;
    static PFNGLEVALCOORD2DPROC glEvalCoord2d;
    static PFNGLEVALCOORD2DVPROC glEvalCoord2dv;
    static PFNGLEVALCOORD2FPROC glEvalCoord2f;
    static PFNGLEVALCOORD2FVPROC glEvalCoord2fv;
    static PFNGLEVALMESH1PROC glEvalMesh1;
    static PFNGLEVALMESH2PROC glEvalMesh2;
    static PFNGLEVALPOINT1PROC glEvalPoint1;
    static PFNGLEVALPOINT2PROC glEvalPoint2;
    static PFNGLFEEDBACKBUFFERPROC glFeedbackBuffer;
    static PFNGLFINISHPROC glFinish;
    static PFNGLFLUSHPROC glFlush;
    static PFNGLFOGFPROC glFogf;
    static PFNGLFOGFVPROC glFogfv;
    static PFNGLFOGIPROC glFogi;
    static PFNGLFOGIVPROC glFogiv;
    static PFNGLFRONTFACEPROC glFrontFace;
    static PFNGLFRUSTUMPROC glFrustum;
    static PFNGLGENLISTSPROC glGenLists;
    static PFNGLGENTEXTURESPROC glGenTextures;
    static PFNGLGETBOOLEANVPROC glGetBooleanv;
    static PFNGLGETCLIPPLANEPROC glGetClipPlane;
    static PFNGLGETDOUBLEVPROC glGetDoublev;
    static PFNGLGETERRORPROC glGetError;
    static PFNGLGETFLOATVPROC glGetFloatv;
    static PFNGLGETINTEGERVPROC glGetIntegerv;
    static PFNGLGETLIGHTFVPROC glGetLightfv;
    static PFNGLGETLIGHTIVPROC glGetLightiv;
    static PFNGLGETMAPDVPROC glGetMapdv;
    static PFNGLGETMAPFVPROC glGetMapfv;
    static PFNGLGETMAPIVPROC glGetMapiv;
    static PFNGLGETMATERIALFVPROC glGetMaterialfv;
    static PFNGLGETMATERIALIVPROC glGetMaterialiv;
    static PFNGLGETPIXELMAPFVPROC glGetPixelMapfv;
    static PFNGLGETPIXELMAPUIVPROC glGetPixelMapuiv;
    static PFNGLGETPIXELMAPUSVPROC glGetPixelMapusv;
    static PFNGLGETPOINTERVPROC glGetPointerv;
    static PFNGLGETPOLYGONSTIPPLEPROC glGetPolygonStipple;
    static PFNGLGETSTRINGPROC glGetString;
    static PFNGLGETTEXENVFVPROC glGetTexEnvfv;
    static PFNGLGETTEXENVIVPROC glGetTexEnviv;
    static PFNGLGETTEXGENDVPROC glGetTexGendv;
    static PFNGLGETTEXGENFVPROC glGetTexGenfv;
    static PFNGLGETTEXGENIVPROC glGetTexGeniv;
    static PFNGLGETTEXIMAGEPROC glGetTexImage;
    static PFNGLGETTEXLEVELPARAMETERFVPROC glGetTexLevelParameterfv;
    static PFNGLGETTEXLEVELPARAMETERIVPROC glGetTexLevelParameteriv;
    static PFNGLGETTEXPARAMETERFVPROC glGetTexParameterfv;
    static PFNGLGETTEXPARAMETERIVPROC glGetTexParameteriv;
    static PFNGLHINTPROC glHint;
    static PFNGLINDEXMASKPROC glIndexMask;
    static PFNGLINDEXPOINTERPROC glIndexPointer;
    static PFNGLINDEXDPROC glIndexd;
    static PFNGLINDEXDVPROC glIndexdv;
    static PFNGLINDEXFPROC glIndexf;
    static PFNGLINDEXFVPROC glIndexfv;
    static PFNGLINDEXIPROC glIndexi;
    static PFNGLINDEXIVPROC glIndexiv;
    static PFNGLINDEXSPROC glIndexs;
    static PFNGLINDEXSVPROC glIndexsv;
    static PFNGLINDEXUBPROC glIndexub;
    static PFNGLINDEXUBVPROC glIndexubv;
    static PFNGLINITNAMESPROC glInitNames;
    static PFNGLINTERLEAVEDARRAYSPROC glInterleavedArrays;
    static PFNGLISENABLEDPROC glIsEnabled;
    static PFNGLISLISTPROC glIsList;
    static PFNGLISTEXTUREPROC glIsTexture;
    static PFNGLLIGHTMODELFPROC glLightModelf;
    static PFNGLLIGHTMODELFVPROC glLightModelfv;
    static PFNGLLIGHTMODELIPROC glLightModeli;
    static PFNGLLIGHTMODELIVPROC glLightModeliv;
    static PFNGLLIGHTFPROC glLightf;
    static PFNGLLIGHTFVPROC glLightfv;
    static PFNGLLIGHTIPROC glLighti;
    static PFNGLLIGHTIVPROC glLightiv;
    static PFNGLLINESTIPPLEPROC glLineStipple;
    static PFNGLLINEWIDTHPROC glLineWidth;
    static PFNGLLISTBASEPROC glListBase;
    static PFNGLLOADIDENTITYPROC glLoadIdentity;
    static PFNGLLOADMATRIXDPROC glLoadMatrixd;
    static PFNGLLOADMATRIXFPROC glLoadMatrixf;
    static PFNGLLOADNAMEPROC glLoadName;
    static PFNGLLOGICOPPROC glLogicOp;
    static PFNGLMAP1DPROC glMap1d;
    static PFNGLMAP1FPROC glMap1f;
    static PFNGLMAP2DPROC glMap2d;
    static PFNGLMAP2FPROC glMap2f;
    static PFNGLMAPGRID1DPROC glMapGrid1d;
    static PFNGLMAPGRID1FPROC glMapGrid1f;
    static PFNGLMAPGRID2DPROC glMapGrid2d;
    static PFNGLMAPGRID2FPROC glMapGrid2f;
    static PFNGLMATERIALFPROC glMaterialf;
    static PFNGLMATERIALFVPROC glMaterialfv;
    static PFNGLMATERIALIPROC glMateriali;
    static PFNGLMATERIALIVPROC glMaterialiv;
    static PFNGLMATRIXMODEPROC glMatrixMode;
    static PFNGLMULTMATRIXDPROC glMultMatrixd;
    static PFNGLMULTMATRIXFPROC glMultMatrixf;
    static PFNGLNEWLISTPROC glNewList;
    static PFNGLNORMAL3BPROC glNormal3b;
    static PFNGLNORMAL3BVPROC glNormal3bv;
    static PFNGLNORMAL3DPROC glNormal3d;
    static PFNGLNORMAL3DVPROC glNormal3dv;
    static PFNGLNORMAL3FPROC glNormal3f;
    static PFNGLNORMAL3FVPROC glNormal3fv;
    static PFNGLNORMAL3IPROC glNormal3i;
    static PFNGLNORMAL3IVPROC glNormal3iv;
    static PFNGLNORMAL3SPROC glNormal3s;
    static PFNGLNORMAL3SVPROC glNormal3sv;
    static PFNGLNORMALPOINTERPROC glNormalPointer;
    static PFNGLORTHOPROC glOrtho;
    static PFNGLPASSTHROUGHPROC glPassThrough;
    static PFNGLPIXELMAPFVPROC glPixelMapfv;
    static PFNGLPIXELMAPUIVPROC glPixelMapuiv;
    static PFNGLPIXELMAPUSVPROC glPixelMapusv;
    static PFNGLPIXELSTOREFPROC glPixelStoref;
    static PFNGLPIXELSTOREIPROC glPixelStorei;
    static PFNGLPIXELTRANSFERFPROC glPixelTransferf;
    static PFNGLPIXELTRANSFERIPROC glPixelTransferi;
    static PFNGLPIXELZOOMPROC glPixelZoom;
    static PFNGLPOINTSIZEPROC glPointSize;
    static PFNGLPOLYGONMODEPROC glPolygonMode;
    static PFNGLPOLYGONOFFSETPROC glPolygonOffset;
    static PFNGLPOLYGONSTIPPLEPROC glPolygonStipple;
    static PFNGLPOPATTRIBPROC glPopAttrib;
    static PFNGLPOPCLIENTATTRIBPROC glPopClientAttrib;
    static PFNGLPOPMATRIXPROC glPopMatrix;
    static PFNGLPOPNAMEPROC glPopName;
    static PFNGLPRIORITIZETEXTURESPROC glPrioritizeTextures;
    static PFNGLPUSHATTRIBPROC glPushAttrib;
    static PFNGLPUSHCLIENTATTRIBPROC glPushClientAttrib;
    static PFNGLPUSHMATRIXPROC glPushMatrix;
    static PFNGLPUSHNAMEPROC glPushName;
    static PFNGLRASTERPOS2DPROC glRasterPos2d;
    static PFNGLRASTERPOS2DVPROC glRasterPos2dv;
    static PFNGLRASTERPOS2FPROC glRasterPos2f;
    static PFNGLRASTERPOS2FVPROC glRasterPos2fv;
    static PFNGLRASTERPOS2IPROC glRasterPos2i;
    static PFNGLRASTERPOS2IVPROC glRasterPos2iv;
    static PFNGLRASTERPOS2SPROC glRasterPos2s;
    static PFNGLRASTERPOS2SVPROC glRasterPos2sv;
    static PFNGLRASTERPOS3DPROC glRasterPos3d;
    static PFNGLRASTERPOS3DVPROC glRasterPos3dv;
    static PFNGLRASTERPOS3FPROC glRasterPos3f;
    static PFNGLRASTERPOS3FVPROC glRasterPos3fv;
    static PFNGLRASTERPOS3IPROC glRasterPos3i;
    static PFNGLRASTERPOS3IVPROC glRasterPos3iv;
    static PFNGLRASTERPOS3SPROC glRasterPos3s;
    static PFNGLRASTERPOS3SVPROC glRasterPos3sv;
    static PFNGLRASTERPOS4DPROC glRasterPos4d;
    static PFNGLRASTERPOS4DVPROC glRasterPos4dv;
    static PFNGLRASTERPOS4FPROC glRasterPos4f;
    static PFNGLRASTERPOS4FVPROC glRasterPos4fv;
    static PFNGLRASTERPOS4IPROC glRasterPos4i;
    static PFNGLRASTERPOS4IVPROC glRasterPos4iv;
    static PFNGLRASTERPOS4SPROC glRasterPos4s;
    static PFNGLRASTERPOS4SVPROC glRasterPos4sv;
    static PFNGLREADBUFFERPROC glReadBuffer;
    static PFNGLREADPIXELSPROC glReadPixels;
    static PFNGLRECTDPROC glRectd;
    static PFNGLRECTDVPROC glRectdv;
    static PFNGLRECTFPROC glRectf;
    static PFNGLRECTFVPROC glRectfv;
    static PFNGLRECTIPROC glRecti;
    static PFNGLRECTIVPROC glRectiv;
    static PFNGLRECTSPROC glRects;
    static PFNGLRECTSVPROC glRectsv;
    static PFNGLRENDERMODEPROC glRenderMode;
    static PFNGLROTATEDPROC glRotated;
    static PFNGLROTATEFPROC glRotatef;
    static PFNGLSCALEDPROC glScaled;
    static PFNGLSCALEFPROC glScalef;
    static PFNGLSCISSORPROC glScissor;
    static PFNGLSELECTBUFFERPROC glSelectBuffer;
    static PFNGLSHADEMODELPROC glShadeModel;
    static PFNGLSTENCILFUNCPROC glStencilFunc;
    static PFNGLSTENCILMASKPROC glStencilMask;
    static PFNGLSTENCILOPPROC glStencilOp;
    static PFNGLTEXCOORD1DPROC glTexCoord1d;
    static PFNGLTEXCOORD1DVPROC glTexCoord1dv;
    static PFNGLTEXCOORD1FPROC glTexCoord1f;
    static PFNGLTEXCOORD1FVPROC glTexCoord1fv;
    static PFNGLTEXCOORD1IPROC glTexCoord1i;
    static PFNGLTEXCOORD1IVPROC glTexCoord1iv;
    static PFNGLTEXCOORD1SPROC glTexCoord1s;
    static PFNGLTEXCOORD1SVPROC glTexCoord1sv;
    static PFNGLTEXCOORD2DPROC glTexCoord2d;
    static PFNGLTEXCOORD2DVPROC glTexCoord2dv;
    static PFNGLTEXCOORD2FPROC glTexCoord2f;
    static PFNGLTEXCOORD2FVPROC glTexCoord2fv;
    static PFNGLTEXCOORD2IPROC glTexCoord2i;
    static PFNGLTEXCOORD2IVPROC glTexCoord2iv;
    static PFNGLTEXCOORD2SPROC glTexCoord2s;
    static PFNGLTEXCOORD2SVPROC glTexCoord2sv;
    static PFNGLTEXCOORD3DPROC glTexCoord3d;
    static PFNGLTEXCOORD3DVPROC glTexCoord3dv;
    static PFNGLTEXCOORD3FPROC glTexCoord3f;
    static PFNGLTEXCOORD3FVPROC glTexCoord3fv;
    static PFNGLTEXCOORD3IPROC glTexCoord3i;
    static PFNGLTEXCOORD3IVPROC glTexCoord3iv;
    static PFNGLTEXCOORD3SPROC glTexCoord3s;
    static PFNGLTEXCOORD3SVPROC glTexCoord3sv;
    static PFNGLTEXCOORD4DPROC glTexCoord4d;
    static PFNGLTEXCOORD4DVPROC glTexCoord4dv;
    static PFNGLTEXCOORD4FPROC glTexCoord4f;
    static PFNGLTEXCOORD4FVPROC glTexCoord4fv;
    static PFNGLTEXCOORD4IPROC glTexCoord4i;
    static PFNGLTEXCOORD4IVPROC glTexCoord4iv;
    static PFNGLTEXCOORD4SPROC glTexCoord4s;
    static PFNGLTEXCOORD4SVPROC glTexCoord4sv;
    static PFNGLTEXCOORDPOINTERPROC glTexCoordPointer;
    static PFNGLTEXENVFPROC glTexEnvf;
    static PFNGLTEXENVFVPROC glTexEnvfv;
    static PFNGLTEXENVIPROC glTexEnvi;
    static PFNGLTEXENVIVPROC glTexEnviv;
    static PFNGLTEXGENDPROC glTexGend;
    static PFNGLTEXGENDVPROC glTexGendv;
    static PFNGLTEXGENFPROC glTexGenf;
    static PFNGLTEXGENFVPROC glTexGenfv;
    static PFNGLTEXGENIPROC glTexGeni;
    static PFNGLTEXGENIVPROC glTexGeniv;
    static PFNGLTEXIMAGE1DPROC glTexImage1D;
    static PFNGLTEXIMAGE2DPROC glTexImage2D;
    static PFNGLTEXPARAMETERFPROC glTexParameterf;
    static PFNGLTEXPARAMETERFVPROC glTexParameterfv;
    static PFNGLTEXPARAMETERIPROC glTexParameteri;
    static PFNGLTEXPARAMETERIVPROC glTexParameteriv;
    static PFNGLTEXSUBIMAGE1DPROC glTexSubImage1D;
    static PFNGLTEXSUBIMAGE2DPROC glTexSubImage2D;
    static PFNGLTRANSLATEDPROC glTranslated;
    static PFNGLTRANSLATEFPROC glTranslatef;
    static PFNGLVERTEX2DPROC glVertex2d;
    static PFNGLVERTEX2DVPROC glVertex2dv;
    static PFNGLVERTEX2FPROC glVertex2f;
    static PFNGLVERTEX2FVPROC glVertex2fv;
    static PFNGLVERTEX2IPROC glVertex2i;
    static PFNGLVERTEX2IVPROC glVertex2iv;
    static PFNGLVERTEX2SPROC glVertex2s;
    static PFNGLVERTEX2SVPROC glVertex2sv;
    static PFNGLVERTEX3DPROC glVertex3d;
    static PFNGLVERTEX3DVPROC glVertex3dv;
    static PFNGLVERTEX3FPROC glVertex3f;
    static PFNGLVERTEX3FVPROC glVertex3fv;
    static PFNGLVERTEX3IPROC glVertex3i;
    static PFNGLVERTEX3IVPROC glVertex3iv;
    static PFNGLVERTEX3SPROC glVertex3s;
    static PFNGLVERTEX3SVPROC glVertex3sv;
    static PFNGLVERTEX4DPROC glVertex4d;
    static PFNGLVERTEX4DVPROC glVertex4dv;
    static PFNGLVERTEX4FPROC glVertex4f;
    static PFNGLVERTEX4FVPROC glVertex4fv;
    static PFNGLVERTEX4IPROC glVertex4i;
    static PFNGLVERTEX4IVPROC glVertex4iv;
    static PFNGLVERTEX4SPROC glVertex4s;
    static PFNGLVERTEX4SVPROC glVertex4sv;
    static PFNGLVERTEXPOINTERPROC glVertexPointer;
    static PFNGLVIEWPORTPROC glViewport;
    static PFNGLUBEGINCURVEPROC gluBeginCurve;
    static PFNGLUBEGINPOLYGONPROC gluBeginPolygon;
    static PFNGLUBEGINSURFACEPROC gluBeginSurface;
    static PFNGLUBEGINTRIMPROC gluBeginTrim;
    static PFNGLUBUILD1DMIPMAPSPROC gluBuild1DMipmaps;
    static PFNGLUBUILD2DMIPMAPSPROC gluBuild2DMipmaps;
    static PFNGLUCYLINDERPROC gluCylinder;
    static PFNGLUDELETENURBSRENDERERPROC gluDeleteNurbsRenderer;
    static PFNGLUDELETEQUADRICPROC gluDeleteQuadric;
    static PFNGLUDELETETESSPROC gluDeleteTess;
    static PFNGLUDISKPROC gluDisk;
    static PFNGLUENDCURVEPROC gluEndCurve;
    static PFNGLUENDPOLYGONPROC gluEndPolygon;
    static PFNGLUENDSURFACEPROC gluEndSurface;
    static PFNGLUENDTRIMPROC gluEndTrim;
    static PFNGLUERRORSTRINGPROC gluErrorString;
    static PFNGLUGETNURBSPROPERTYPROC gluGetNurbsProperty;
    static PFNGLUGETSTRINGPROC gluGetString;
    static PFNGLUGETTESSPROPERTYPROC gluGetTessProperty;
    static PFNGLULOADSAMPLINGMATRICESPROC gluLoadSamplingMatrices;
    static PFNGLULOOKATPROC gluLookAt;
    static PFNGLUNEWNURBSRENDERERPROC gluNewNurbsRenderer;
    static PFNGLUNEWQUADRICPROC gluNewQuadric;
    static PFNGLUNEWTESSPROC gluNewTess;
    static PFNGLUNEXTCONTOURPROC gluNextContour;
    static PFNGLUNURBSCALLBACKPROC gluNurbsCallback;
    static PFNGLUNURBSCURVEPROC gluNurbsCurve;
    static PFNGLUNURBSPROPERTYPROC gluNurbsProperty;
    static PFNGLUNURBSSURFACEPROC gluNurbsSurface;
    static PFNGLUORTHO2DPROC gluOrtho2D;
    static PFNGLUPARTIALDISKPROC gluPartialDisk;
    static PFNGLUPERSPECTIVEPROC gluPerspective;
    static PFNGLUPICKMATRIXPROC gluPickMatrix;
    static PFNGLUPROJECTPROC gluProject;
    static PFNGLUPWLCURVEPROC gluPwlCurve;
    static PFNGLUQUADRICCALLBACKPROC gluQuadricCallback;
    static PFNGLUQUADRICDRAWSTYLEPROC gluQuadricDrawStyle;
    static PFNGLUQUADRICNORMALSPROC gluQuadricNormals;
    static PFNGLUQUADRICORIENTATIONPROC gluQuadricOrientation;
    static PFNGLUQUADRICTEXTUREPROC gluQuadricTexture;
    static PFNGLUSCALEIMAGEPROC gluScaleImage;
    static PFNGLUSPHEREPROC gluSphere;
    static PFNGLUTESSBEGINCONTOURPROC gluTessBeginContour;
    static PFNGLUTESSBEGINPOLYGONPROC gluTessBeginPolygon;
    static PFNGLUTESSCALLBACKPROC gluTessCallback;
    static PFNGLUTESSENDCONTOURPROC gluTessEndContour;
    static PFNGLUTESSENDPOLYGONPROC gluTessEndPolygon;
    static PFNGLUTESSNORMALPROC gluTessNormal;
    static PFNGLUTESSPROPERTYPROC gluTessProperty;
    static PFNGLUTESSVERTEXPROC gluTessVertex;
    static PFNGLUUNPROJECTPROC gluUnProject;
    static DWORD texImageData[];
};
#endif /* CVIDEO3D_H_ */
