; OpenGL programming example format PE64 GUI 5.0 entry start include 'win64a.inc' include '..\..\opengl\opengl.inc' section '.text' code readable executable start: sub rsp,8 ; Make stack dqword aligned invoke GetModuleHandle,0 mov [wc.hInstance],rax invoke LoadIcon,0,IDI_APPLICATION mov [wc.hIcon],rax invoke LoadCursor,0,IDC_ARROW mov [wc.hCursor],rax invoke RegisterClass,wc invoke CreateWindowEx,0,_class,_title,WS_VISIBLE+WS_OVERLAPPEDWINDOW+WS_CLIPCHILDREN+WS_CLIPSIBLINGS,16,16,432,432,NULL,NULL,[wc.hInstance],NULL msg_loop: invoke GetMessage,addr msg,NULL,0,0 cmp eax,1 jb end_loop jne msg_loop invoke TranslateMessage,addr msg invoke DispatchMessage,addr msg jmp msg_loop end_loop: invoke ExitProcess,[msg.wParam] proc WindowProc uses rbx rsi rdi, hwnd,wmsg,wparam,lparam mov [hwnd],rcx frame cmp edx,WM_CREATE je .wmcreate cmp edx,WM_SIZE je .wmsize cmp edx,WM_PAINT je .wmpaint cmp edx,WM_KEYDOWN je .wmkeydown cmp edx,WM_DESTROY je .wmdestroy .defwndproc: invoke DefWindowProc,rcx,rdx,r8,r9 jmp .finish .wmcreate: invoke GetDC,rcx mov [hdc],rax lea rdi,[pfd] mov rcx,sizeof.PIXELFORMATDESCRIPTOR shr 3 xor eax,eax rep stosq mov [pfd.nSize],sizeof.PIXELFORMATDESCRIPTOR mov [pfd.nVersion],1 mov [pfd.dwFlags],PFD_SUPPORT_OPENGL+PFD_DOUBLEBUFFER+PFD_DRAW_TO_WINDOW mov [pfd.iLayerType],PFD_MAIN_PLANE mov [pfd.iPixelType],PFD_TYPE_RGBA mov [pfd.cColorBits],16 mov [pfd.cDepthBits],16 mov [pfd.cAccumBits],0 mov [pfd.cStencilBits],0 invoke ChoosePixelFormat,[hdc],addr pfd invoke SetPixelFormat,[hdc],eax,addr pfd invoke wglCreateContext,[hdc] mov [hrc],rax invoke wglMakeCurrent,[hdc],[hrc] invoke GetClientRect,[hwnd],addr rc invoke glViewport,0,0,[rc.right],[rc.bottom] invoke GetTickCount mov [clock],eax xor eax,eax jmp .finish .wmsize: invoke GetClientRect,[hwnd],addr rc invoke glViewport,0,0,[rc.right],[rc.bottom] xor eax,eax jmp .finish .wmpaint: invoke GetTickCount sub eax,[clock] cmp eax,10 jb .animation_ok add [clock],eax invoke glRotatef,float [theta],float dword 0.0,float dword 0.0,float dword 1.0 .animation_ok: invoke glClear,GL_COLOR_BUFFER_BIT invoke glBegin,GL_QUADS invoke glColor3f,float dword 1.0,float dword 0.1,float dword 0.1 invoke glVertex3d,float -0.6,float -0.6,float 0.0 invoke glColor3f,float dword 0.1,float dword 0.1,float dword 0.1 invoke glVertex3d,float 0.6,float -0.6,float 0.0 invoke glColor3f,float dword 0.1,float dword 0.1,float dword 1.0 invoke glVertex3d,float 0.6,float 0.6,float 0.0 invoke glColor3f,float dword 1.0,float dword 0.1,float dword 1.0 invoke glVertex3d,float -0.6,float 0.6,float 0.0 invoke glEnd invoke SwapBuffers,[hdc] xor eax,eax jmp .finish .wmkeydown: cmp r8d,VK_ESCAPE jne .defwndproc .wmdestroy: invoke wglMakeCurrent,0,0 invoke wglDeleteContext,[hrc] invoke ReleaseDC,[hwnd],[hdc] invoke PostQuitMessage,0 xor eax,eax .finish: endf ret endp section '.data' data readable writeable _title db 'OpenGL example',0 _class db 'FASMOPENGL32',0 theta GLfloat 0.6 wc WNDCLASS 0,WindowProc,0,0,NULL,NULL,NULL,NULL,NULL,_class hdc dq ? hrc dq ? msg MSG rc RECT pfd PIXELFORMATDESCRIPTOR clock dd ? section '.idata' import data readable writeable library kernel,'KERNEL32.DLL',\ user,'USER32.DLL',\ gdi,'GDI32.DLL',\ opengl,'OPENGL32.DLL',\ glu,'GLU32.DLL' import kernel,\ GetModuleHandle,'GetModuleHandleA',\ GetTickCount,'GetTickCount',\ ExitProcess,'ExitProcess' import user,\ RegisterClass,'RegisterClassA',\ CreateWindowEx,'CreateWindowExA',\ DefWindowProc,'DefWindowProcA',\ GetMessage,'GetMessageA',\ TranslateMessage,'TranslateMessage',\ DispatchMessage,'DispatchMessageA',\ LoadCursor,'LoadCursorA',\ LoadIcon,'LoadIconA',\ GetClientRect,'GetClientRect',\ GetDC,'GetDC',\ ReleaseDC,'ReleaseDC',\ PostQuitMessage,'PostQuitMessage' import gdi,\ ChoosePixelFormat,'ChoosePixelFormat',\ SetPixelFormat,'SetPixelFormat',\ SwapBuffers,'SwapBuffers' import opengl,\ glAccum,'glAccum',\ glAlphaFunc,'glAlphaFunc',\ glAreTexturesResident,'glAreTexturesResident',\ glArrayElement,'glArrayElement',\ glBegin,'glBegin',\ glBindTexture,'glBindTexture',\ glBitmap,'glBitmap',\ glBlendFunc,'glBlendFunc',\ glCallList,'glCallList',\ glCallLists,'glCallLists',\ glClear,'glClear',\ glClearAccum,'glClearAccum',\ glClearColor,'glClearColor',\ glClearDepth,'glClearDepth',\ glClearIndex,'glClearIndex',\ glClearStencil,'glClearStencil',\ glClipPlane,'glClipPlane',\ glColor3b,'glColor3b',\ glColor3bv,'glColor3bv',\ glColor3d,'glColor3d',\ glColor3dv,'glColor3dv',\ glColor3f,'glColor3f',\ glColor3fv,'glColor3fv',\ glColor3i,'glColor3i',\ glColor3iv,'glColor3iv',\ glColor3s,'glColor3s',\ glColor3sv,'glColor3sv',\ glColor3ub,'glColor3ub',\ glColor3ubv,'glColor3ubv',\ glColor3ui,'glColor3ui',\ glColor3uiv,'glColor3uiv',\ glColor3us,'glColor3us',\ glColor3usv,'glColor3usv',\ glColor4b,'glColor4b',\ glColor4bv,'glColor4bv',\ glColor4d,'glColor4d',\ glColor4dv,'glColor4dv',\ glColor4f,'glColor4f',\ glColor4fv,'glColor4fv',\ glColor4i,'glColor4i',\ glColor4iv,'glColor4iv',\ glColor4s,'glColor4s',\ glColor4sv,'glColor4sv',\ glColor4ub,'glColor4ub',\ glColor4ubv,'glColor4ubv',\ glColor4ui,'glColor4ui',\ glColor4uiv,'glColor4uiv',\ glColor4us,'glColor4us',\ glColor4usv,'glColor4usv',\ glColorMask,'glColorMask',\ glColorMaterial,'glColorMaterial',\ glColorPointer,'glColorPointer',\ glCopyPixels,'glCopyPixels',\ glCopyTexImage1D,'glCopyTexImage1D',\ glCopyTexImage2D,'glCopyTexImage2D',\ glCopyTexSubImage1D,'glCopyTexSubImage1D',\ glCopyTexSubImage2D,'glCopyTexSubImage2D',\ glCullFace,'glCullFace',\ glDeleteLists,'glDeleteLists',\ glDeleteTextures,'glDeleteTextures',\ glDepthFunc,'glDepthFunc',\ glDepthMask,'glDepthMask',\ glDepthRange,'glDepthRange',\ glDisable,'glDisable',\ glDisableClientState,'glDisableClientState',\ glDrawArrays,'glDrawArrays',\ glDrawBuffer,'glDrawBuffer',\ glDrawElements,'glDrawElements',\ glDrawPixels,'glDrawPixels',\ glEdgeFlag,'glEdgeFlag',\ glEdgeFlagPointer,'glEdgeFlagPointer',\ glEdgeFlagv,'glEdgeFlagv',\ glEnable,'glEnable',\ glEnableClientState,'glEnableClientState',\ glEnd,'glEnd',\ glEndList,'glEndList',\ glEvalCoord1d,'glEvalCoord1d',\ glEvalCoord1dv,'glEvalCoord1dv',\ glEvalCoord1f,'glEvalCoord1f',\ glEvalCoord1fv,'glEvalCoord1fv',\ glEvalCoord2d,'glEvalCoord2d',\ glEvalCoord2dv,'glEvalCoord2dv',\ glEvalCoord2f,'glEvalCoord2f',\ glEvalCoord2fv,'glEvalCoord2fv',\ glEvalMesh1,'glEvalMesh1',\ glEvalMesh2,'glEvalMesh2',\ glEvalPoint1,'glEvalPoint1',\ glEvalPoint2,'glEvalPoint2',\ glFeedbackBuffer,'glFeedbackBuffer',\ glFinish,'glFinish',\ glFlush,'glFlush',\ glFogf,'glFogf',\ glFogfv,'glFogfv',\ glFogi,'glFogi',\ glFogiv,'glFogiv',\ glFrontFace,'glFrontFace',\ glFrustum,'glFrustum',\ glGenLists,'glGenLists',\ glGenTextures,'glGenTextures',\ glGetBooleanv,'glGetBooleanv',\ glGetClipPlane,'glGetClipPlane',\ glGetDoublev,'glGetDoublev',\ glGetError,'glGetError',\ glGetFloatv,'glGetFloatv',\ glGetIntegerv,'glGetIntegerv',\ glGetLightfv,'glGetLightfv',\ glGetLightiv,'glGetLightiv',\ glGetMapdv,'glGetMapdv',\ glGetMapfv,'glGetMapfv',\ glGetMapiv,'glGetMapiv',\ glGetMaterialfv,'glGetMaterialfv',\ glGetMaterialiv,'glGetMaterialiv',\ glGetPixelMapfv,'glGetPixelMapfv',\ glGetPixelMapuiv,'glGetPixelMapuiv',\ glGetPixelMapusv,'glGetPixelMapusv',\ glGetPointerv,'glGetPointerv',\ glGetPolygonStipple,'glGetPolygonStipple',\ glGetString,'glGetString',\ glGetTexEnvfv,'glGetTexEnvfv',\ glGetTexEnviv,'glGetTexEnviv',\ glGetTexGendv,'glGetTexGendv',\ glGetTexGenfv,'glGetTexGenfv',\ glGetTexGeniv,'glGetTexGeniv',\ glGetTexImage,'glGetTexImage',\ glGetTexLevelParameterfv,'glGetTexLevelParameterfv',\ glGetTexLevelParameteriv,'glGetTexLevelParameteriv',\ glGetTexParameterfv,'glGetTexParameterfv',\ glGetTexParameteriv,'glGetTexParameteriv',\ glHint,'glHint',\ glIndexMask,'glIndexMask',\ glIndexPointer,'glIndexPointer',\ glIndexd,'glIndexd',\ glIndexdv,'glIndexdv',\ glIndexf,'glIndexf',\ glIndexfv,'glIndexfv',\ glIndexi,'glIndexi',\ glIndexiv,'glIndexiv',\ glIndexs,'glIndexs',\ glIndexsv,'glIndexsv',\ glIndexub,'glIndexub',\ glIndexubv,'glIndexubv',\ glInitNames,'glInitNames',\ glInterleavedArrays,'glInterleavedArrays',\ glIsEnabled,'glIsEnabled',\ glIsList,'glIsList',\ glIsTexture,'glIsTexture',\ glLightModelf,'glLightModelf',\ glLightModelfv,'glLightModelfv',\ glLightModeli,'glLightModeli',\ glLightModeliv,'glLightModeliv',\ glLightf,'glLightf',\ glLightfv,'glLightfv',\ glLighti,'glLighti',\ glLightiv,'glLightiv',\ glLineStipple,'glLineStipple',\ glLineWidth,'glLineWidth',\ glListBase,'glListBase',\ glLoadIdentity,'glLoadIdentity',\ glLoadMatrixd,'glLoadMatrixd',\ glLoadMatrixf,'glLoadMatrixf',\ glLoadName,'glLoadName',\ glLogicOp,'glLogicOp',\ glMap1d,'glMap1d',\ glMap1f,'glMap1f',\ glMap2d,'glMap2d',\ glMap2f,'glMap2f',\ glMapGrid1d,'glMapGrid1d',\ glMapGrid1f,'glMapGrid1f',\ glMapGrid2d,'glMapGrid2d',\ glMapGrid2f,'glMapGrid2f',\ glMaterialf,'glMaterialf',\ glMaterialfv,'glMaterialfv',\ glMateriali,'glMateriali',\ glMaterialiv,'glMaterialiv',\ glMatrixMode,'glMatrixMode',\ glMultMatrixd,'glMultMatrixd',\ glMultMatrixf,'glMultMatrixf',\ glNewList,'glNewList',\ glNormal3b,'glNormal3b',\ glNormal3bv,'glNormal3bv',\ glNormal3d,'glNormal3d',\ glNormal3dv,'glNormal3dv',\ glNormal3f,'glNormal3f',\ glNormal3fv,'glNormal3fv',\ glNormal3i,'glNormal3i',\ glNormal3iv,'glNormal3iv',\ glNormal3s,'glNormal3s',\ glNormal3sv,'glNormal3sv',\ glNormalPointer,'glNormalPointer',\ glOrtho,'glOrtho',\ glPassThrough,'glPassThrough',\ glPixelMapfv,'glPixelMapfv',\ glPixelMapuiv,'glPixelMapuiv',\ glPixelMapusv,'glPixelMapusv',\ glPixelStoref,'glPixelStoref',\ glPixelStorei,'glPixelStorei',\ glPixelTransferf,'glPixelTransferf',\ glPixelTransferi,'glPixelTransferi',\ glPixelZoom,'glPixelZoom',\ glPointSize,'glPointSize',\ glPolygonMode,'glPolygonMode',\ glPolygonOffset,'glPolygonOffset',\ glPolygonStipple,'glPolygonStipple',\ glPopAttrib,'glPopAttrib',\ glPopClientAttrib,'glPopClientAttrib',\ glPopMatrix,'glPopMatrix',\ glPopName,'glPopName',\ glPrioritizeTextures,'glPrioritizeTextures',\ glPushAttrib,'glPushAttrib',\ glPushClientAttrib,'glPushClientAttrib',\ glPushMatrix,'glPushMatrix',\ glPushName,'glPushName',\ glRasterPos2d,'glRasterPos2d',\ glRasterPos2dv,'glRasterPos2dv',\ glRasterPos2f,'glRasterPos2f',\ glRasterPos2fv,'glRasterPos2fv',\ glRasterPos2i,'glRasterPos2i',\ glRasterPos2iv,'glRasterPos2iv',\ glRasterPos2s,'glRasterPos2s',\ glRasterPos2sv,'glRasterPos2sv',\ glRasterPos3d,'glRasterPos3d',\ glRasterPos3dv,'glRasterPos3dv',\ glRasterPos3f,'glRasterPos3f',\ glRasterPos3fv,'glRasterPos3fv',\ glRasterPos3i,'glRasterPos3i',\ glRasterPos3iv,'glRasterPos3iv',\ glRasterPos3s,'glRasterPos3s',\ glRasterPos3sv,'glRasterPos3sv',\ glRasterPos4d,'glRasterPos4d',\ glRasterPos4dv,'glRasterPos4dv',\ glRasterPos4f,'glRasterPos4f',\ glRasterPos4fv,'glRasterPos4fv',\ glRasterPos4i,'glRasterPos4i',\ glRasterPos4iv,'glRasterPos4iv',\ glRasterPos4s,'glRasterPos4s',\ glRasterPos4sv,'glRasterPos4sv',\ glReadBuffer,'glReadBuffer',\ glReadPixels,'glReadPixels',\ glRectd,'glRectd',\ glRectdv,'glRectdv',\ glRectf,'glRectf',\ glRectfv,'glRectfv',\ glRecti,'glRecti',\ glRectiv,'glRectiv',\ glRects,'glRects',\ glRectsv,'glRectsv',\ glRenderMode,'glRenderMode',\ glRotated,'glRotated',\ glRotatef,'glRotatef',\ glScaled,'glScaled',\ glScalef,'glScalef',\ glScissor,'glScissor',\ glSelectBuffer,'glSelectBuffer',\ glShadeModel,'glShadeModel',\ glStencilFunc,'glStencilFunc',\ glStencilMask,'glStencilMask',\ glStencilOp,'glStencilOp',\ glTexCoord1d,'glTexCoord1d',\ glTexCoord1dv,'glTexCoord1dv',\ glTexCoord1f,'glTexCoord1f',\ glTexCoord1fv,'glTexCoord1fv',\ glTexCoord1i,'glTexCoord1i',\ glTexCoord1iv,'glTexCoord1iv',\ glTexCoord1s,'glTexCoord1s',\ glTexCoord1sv,'glTexCoord1sv',\ glTexCoord2d,'glTexCoord2d',\ glTexCoord2dv,'glTexCoord2dv',\ glTexCoord2f,'glTexCoord2f',\ glTexCoord2fv,'glTexCoord2fv',\ glTexCoord2i,'glTexCoord2i',\ glTexCoord2iv,'glTexCoord2iv',\ glTexCoord2s,'glTexCoord2s',\ glTexCoord2sv,'glTexCoord2sv',\ glTexCoord3d,'glTexCoord3d',\ glTexCoord3dv,'glTexCoord3dv',\ glTexCoord3f,'glTexCoord3f',\ glTexCoord3fv,'glTexCoord3fv',\ glTexCoord3i,'glTexCoord3i',\ glTexCoord3iv,'glTexCoord3iv',\ glTexCoord3s,'glTexCoord3s',\ glTexCoord3sv,'glTexCoord3sv',\ glTexCoord4d,'glTexCoord4d',\ glTexCoord4dv,'glTexCoord4dv',\ glTexCoord4f,'glTexCoord4f',\ glTexCoord4fv,'glTexCoord4fv',\ glTexCoord4i,'glTexCoord4i',\ glTexCoord4iv,'glTexCoord4iv',\ glTexCoord4s,'glTexCoord4s',\ glTexCoord4sv,'glTexCoord4sv',\ glTexCoordPointer,'glTexCoordPointer',\ glTexEnvf,'glTexEnvf',\ glTexEnvfv,'glTexEnvfv',\ glTexEnvi,'glTexEnvi',\ glTexEnviv,'glTexEnviv',\ glTexGend,'glTexGend',\ glTexGendv,'glTexGendv',\ glTexGenf,'glTexGenf',\ glTexGenfv,'glTexGenfv',\ glTexGeni,'glTexGeni',\ glTexGeniv,'glTexGeniv',\ glTexImage1D,'glTexImage1D',\ glTexImage2D,'glTexImage2D',\ glTexParameterf,'glTexParameterf',\ glTexParameterfv,'glTexParameterfv',\ glTexParameteri,'glTexParameteri',\ glTexParameteriv,'glTexParameteriv',\ glTexSubImage1D,'glTexSubImage1D',\ glTexSubImage2D,'glTexSubImage2D',\ glTranslated,'glTranslated',\ glTranslatef,'glTranslatef',\ glVertex2d,'glVertex2d',\ glVertex2dv,'glVertex2dv',\ glVertex2f,'glVertex2f',\ glVertex2fv,'glVertex2fv',\ glVertex2i,'glVertex2i',\ glVertex2iv,'glVertex2iv',\ glVertex2s,'glVertex2s',\ glVertex2sv,'glVertex2sv',\ glVertex3d,'glVertex3d',\ glVertex3dv,'glVertex3dv',\ glVertex3f,'glVertex3f',\ glVertex3fv,'glVertex3fv',\ glVertex3i,'glVertex3i',\ glVertex3iv,'glVertex3iv',\ glVertex3s,'glVertex3s',\ glVertex3sv,'glVertex3sv',\ glVertex4d,'glVertex4d',\ glVertex4dv,'glVertex4dv',\ glVertex4f,'glVertex4f',\ glVertex4fv,'glVertex4fv',\ glVertex4i,'glVertex4i',\ glVertex4iv,'glVertex4iv',\ glVertex4s,'glVertex4s',\ glVertex4sv,'glVertex4sv',\ glVertexPointer,'glVertexPointer',\ glViewport,'glViewport',\ wglGetProcAddress,'wglGetProcAddress',\ wglCopyContext,'wglCopyContext',\ wglCreateContext,'wglCreateContext',\ wglCreateLayerContext,'wglCreateLayerContext',\ wglDeleteContext,'wglDeleteContext',\ wglDescribeLayerPlane,'wglDescribeLayerPlane',\ wglGetCurrentContext,'wglGetCurrentContext',\ wglGetCurrentDC,'wglGetCurrentDC',\ wglGetLayerPaletteEntries,'wglGetLayerPaletteEntries',\ wglMakeCurrent,'wglMakeCurrent',\ wglRealizeLayerPalette,'wglRealizeLayerPalette',\ wglSetLayerPaletteEntries,'wglSetLayerPaletteEntries',\ wglShareLists,'wglShareLists',\ wglSwapLayerBuffers,'wglSwapLayerBuffers',\ wglSwapMultipleBuffers,'wglSwapMultipleBuffers',\ wglUseFontBitmapsA,'wglUseFontBitmapsA',\ wglUseFontOutlinesA,'wglUseFontOutlinesA',\ wglUseFontBitmapsW,'wglUseFontBitmapsW',\ wglUseFontOutlinesW,'wglUseFontOutlinesW',\ glDrawRangeElements,'glDrawRangeElements',\ glTexImage3D,'glTexImage3D',\ glBlendColor,'glBlendColor',\ glBlendEquation,'glBlendEquation',\ glColorSubTable,'glColorSubTable',\ glCopyColorSubTable,'glCopyColorSubTable',\ glColorTable,'glColorTable',\ glCopyColorTable,'glCopyColorTable',\ glColorTableParameteriv,'glColorTableParameteriv',\ glColorTableParameterfv,'glColorTableParameterfv',\ glGetColorTable,'glGetColorTable',\ glGetColorTableParameteriv,'glGetColorTableParameteriv',\ glGetColorTableParameterfv,'glGetColorTableParameterfv',\ glConvolutionFilter1D,'glConvolutionFilter1D',\ glConvolutionFilter2D,'glConvolutionFilter2D',\ glCopyConvolutionFilter1D,'glCopyConvolutionFilter1D',\ glCopyConvolutionFilter2D,'glCopyConvolutionFilter2D',\ glGetConvolutionFilter,'glGetConvolutionFilter',\ glSeparableFilter2D,'glSeparableFilter2D',\ glGetSeparableFilter,'glGetSeparableFilter',\ glConvolutionParameteri,'glConvolutionParameteri',\ glConvolutionParameteriv,'glConvolutionParameteriv',\ glConvolutionParameterf,'glConvolutionParameterf',\ glConvolutionParameterfv,'glConvolutionParameterfv',\ glGetConvolutionParameteriv,'glGetConvolutionParameteriv',\ glGetConvolutionParameterfv,'glGetConvolutionParameterfv',\ glHistogram,'glHistogram',\ glResetHistogram,'glResetHistogram',\ glGetHistogram,'glGetHistogram',\ glGetHistogramParameteriv,'glGetHistogramParameteriv',\ glGetHistogramParameterfv,'glGetHistogramParameterfv',\ glMinmax,'glMinmax',\ glResetMinmax,'glResetMinmax',\ glGetMinmax,'glGetMinmax',\ glGetMinmaxParameteriv,'glGetMinmaxParameteriv',\ glGetMinmaxParameterfv,'glGetMinmaxParameterfv' import glu,\ gluBeginCurve,'gluBeginCurve',\ gluBeginPolygon,'gluBeginPolygon',\ gluBeginSurface,'gluBeginSurface',\ gluBeginTrim,'gluBeginTrim',\ gluBuild1DMipmaps,'gluBuild1DMipmaps',\ gluBuild2DMipmaps,'gluBuild2DMipmaps',\ gluCylinder,'gluCylinder',\ gluDeleteNurbsRenderer,'gluDeleteNurbsRenderer',\ gluDeleteQuadric,'gluDeleteQuadric',\ gluDeleteTess,'gluDeleteTess',\ gluDisk,'gluDisk',\ gluEndCurve,'gluEndCurve',\ gluEndPolygon,'gluEndPolygon',\ gluEndSurface,'gluEndSurface',\ gluEndTrim,'gluEndTrim',\ gluErrorString,'gluErrorString',\ gluGetNurbsProperty,'gluGetNurbsProperty',\ gluGetString,'gluGetString',\ gluGetTessProperty,'gluGetTessProperty',\ gluLoadSamplingMatrices,'gluLoadSamplingMatrices',\ gluLookAt,'gluLookAt',\ gluNewNurbsRenderer,'gluNewNurbsRenderer',\ gluNewQuadric,'gluNewQuadric',\ gluNewTess,'gluNewTess',\ gluNextContour,'gluNextContour',\ gluNurbsCallback,'gluNurbsCallback',\ gluNurbsCurve,'gluNurbsCurve',\ gluNurbsProperty,'gluNurbsProperty',\ gluNurbsSurface,'gluNurbsSurface',\ gluOrtho2D,'gluOrtho2D',\ gluPartialDisk,'gluPartialDisk',\ gluPerspective,'gluPerspective',\ gluPickMatrix,'gluPickMatrix',\ gluProject,'gluProject',\ gluPwlCurve,'gluPwlCurve',\ gluQuadricCallback,'gluQuadricCallback',\ gluQuadricDrawStyle,'gluQuadricDrawStyle',\ gluQuadricNormals,'gluQuadricNormals',\ gluQuadricOrientation,'gluQuadricOrientation',\ gluQuadricTexture,'gluQuadricTexture',\ gluScaleImage,'gluScaleImage',\ gluSphere,'gluSphere',\ gluTessBeginContour,'gluTessBeginContour',\ gluTessBeginPolygon,'gluTessBeginPolygon',\ gluTessCallback,'gluTessCallback',\ gluTessEndContour,'gluTessEndContour',\ gluTessEndPolygon,'gluTessEndPolygon',\ gluTessNormal,'gluTessNormal',\ gluTessProperty,'gluTessProperty',\ gluTessVertex,'gluTessVertex',\ gluUnProject,'gluUnProject'