/************************http://blog.csdn.net/sunboyiris*************************************/ //窗口初始化和退出函数 /* 设置窗口显示模式。基本模式有RGBA或颜色表、单或双缓存,也可指定其他附加模式:深度、模板或累积缓存(depth,stencil,and/or accumulation buffer)。参数mask是一组位标志的联合(取或),AUX_RGBA或AUX_INDEX、AUX_SINGLE或AUX_DOUBLE,以及其它有效标志AUX_DEPTH、AUX_STENCIL或AUX_ACCUM。  */ void APIENTRY auxInitDisplayMode(GLenum); /*   设置窗口位置及大小。参数(x, y)为窗口的左上角点的屏幕坐标,参数(width, height)为窗口的宽度和高度,单位为象素,缺省值为(0, 0, 100, 100)。 */ void APIENTRY auxInitPosition(int, int, int, int);  /* GLenum APIENTRY auxInitWindow(LPCTSTR); */ #ifdef UNICODE #define auxInitWindow auxInitWindowW #else #define auxInitWindow auxInitWindowA #endif GLenum APIENTRY auxInitWindowA(LPCSTR); GLenum APIENTRY auxInitWindowW(LPCWSTR);  void APIENTRY auxCloseWindow(void); void APIENTRY auxQuit(void);   //一帧曲面绘图结束后缓存拷贝切换缓存 void APIENTRY auxSwapBuffers(void);   /* 定义场景绘制循环函数。displayFunc指针指向场景绘制函数。当窗口需要更新或场景发生改变时,程序便调用它所指的函数,重新绘制场景。 */ typedef void (CALLBACK* AUXMAINPROC)(void); void APIENTRY auxMainLoop(AUXMAINPROC);     //窗口处理和时间输入函数  typedef void (CALLBACK* AUXEXPOSEPROC)(int, int); void APIENTRY auxExposeFunc(AUXEXPOSEPROC);  /*  定义窗口改变时形状重定函数。参数function是一个函数指针,这个函数带有两个参数,即窗口改变后的新宽度和新高度。通常,function是 glViewport(),显示裁减后的新尺寸,重定义投影矩阵,以便使投影后图像的比例与视点匹配,避免比例失调。若不调用 auxReshapeFunc(),缺省重定物体形状的函数功能是调用一个二维的正射投影矩阵。运用辅助库,窗口将在每个事件改变后自动重新绘制。 */ typedef void (CALLBACK* AUXRESHAPEPROC)(GLsizei, GLsizei); void APIENTRY auxReshapeFunc(AUXRESHAPEPROC);  /*  定义空闲状态执行函数。参数func是一个指针,指向所要执行的函数功能。当它为零时,func执行无效。 */ typedef void (CALLBACK* AUXIDLEPROC)(void); void APIENTRY auxIdleFunc(AUXIDLEPROC);  /*  定义键盘响应函数。参数function就是当按下key键时所调用的函数指针,辅助库为参数key定义了几个常量:AUX_0至AUX_9、 AUX_A至AUX_Z、AUX_a至AUX_z、AUX_LEFT、AUX_RIGHT、AUX_UP、AUX_DOWN(方向键)、 AUX_ESCAPE、AUX_SPACE或AUX_RETURN。  */ typedef void (CALLBACK* AUXKEYPROC)(void); void APIENTRY auxKeyFunc(int, AUXKEYPROC);  /*   定义鼠标响应函数。参数function就是当鼠标以mode方式作用于button时所调用的函数。参数button有 AUX_LEFTBUTTON、AUX_MIDDLEBUTTON或AUX_RIGHTBUTTON(以右手为标准)。参数mode代表鼠标触击状态,击中时为AUX_MOUSEDOWN,释放时为AUX_MOUSEUP。参数function必须带一个参数,它是指向结构AUX_EVENNTREC的指针。当函数auxMouseFunc()被调用时将为这个结构分配相应的内存。通常用法类似如下:  */ typedef void (CALLBACK* AUXMOUSEPROC)(AUX_EVENTREC *); void APIENTRY auxMouseFunc(int, int, AUXMOUSEPROC);     int  APIENTRY auxGetColorMapSize(void); void APIENTRY auxGetMouseLoc(int *, int *);  void APIENTRY auxSetOneColor(int, float, float, float); //设置自定义颜色的索引。参数index即索引号,参数red、green、blue分别为红、绿、蓝值,范围在(0~1)内。  void APIENTRY auxSetFogRamp(int, int); void APIENTRY auxSetGreyRamp(void); void APIENTRY auxSetRGBMap(int, float *);  /* AUX_RGBImageRec * APIENTRY auxRGBImageLoad(LPCTSTR); */ #ifdef UNICODE #define auxRGBImageLoad auxRGBImageLoadW #else #define auxRGBImageLoad auxRGBImageLoadA #endif AUX_RGBImageRec * APIENTRY auxRGBImageLoadA(LPCSTR); AUX_RGBImageRec * APIENTRY auxRGBImageLoadW(LPCWSTR);  #ifdef UNICODE #define auxDIBImageLoad auxDIBImageLoadW #else #define auxDIBImageLoad auxDIBImageLoadA #endif AUX_RGBImageRec * APIENTRY auxDIBImageLoadA(LPCSTR); AUX_RGBImageRec * APIENTRY auxDIBImageLoadW(LPCWSTR);  void APIENTRY auxCreateFont(void); /* void APIENTRY auxDrawStr(LPCTSTR); */ #ifdef UNICODE #define auxDrawStr auxDrawStrW #else #define auxDrawStr auxDrawStrA #endif void APIENTRY auxDrawStrA(LPCSTR); void APIENTRY auxDrawStrW(LPCWSTR);    //三维物体绘制函数 void APIENTRY auxWireSphere(GLdouble); void APIENTRY auxSolidSphere(GLdouble); void APIENTRY auxWireCube(GLdouble); void APIENTRY auxSolidCube(GLdouble); void APIENTRY auxWireBox(GLdouble, GLdouble, GLdouble); void APIENTRY auxSolidBox(GLdouble, GLdouble, GLdouble); void APIENTRY auxWireTorus(GLdouble, GLdouble); void APIENTRY auxSolidTorus(GLdouble, GLdouble); void APIENTRY auxWireCylinder(GLdouble, GLdouble); void APIENTRY auxSolidCylinder(GLdouble, GLdouble); void APIENTRY auxWireIcosahedron(GLdouble); void APIENTRY auxSolidIcosahedron(GLdouble); void APIENTRY auxWireOctahedron(GLdouble); void APIENTRY auxSolidOctahedron(GLdouble); void APIENTRY auxWireTetrahedron(GLdouble); void APIENTRY auxSolidTetrahedron(GLdouble); void APIENTRY auxWireDodecahedron(GLdouble); void APIENTRY auxSolidDodecahedron(GLdouble); void APIENTRY auxWireCone(GLdouble, GLdouble); void APIENTRY auxSolidCone(GLdouble, GLdouble); void APIENTRY auxWireTeapot(GLdouble); void APIENTRY auxSolidTeapot(GLdouble);  /* ** Window specific functions ** hwnd, hdc, and hglrc valid after auxInitWindow() */ HWND  APIENTRY auxGetHWND(void); HDC   APIENTRY auxGetHDC(void); HGLRC APIENTRY auxGetHGLRC(void);  /* ** Viewperf support functions and constants */ /* Display Mode Selection Criteria */ enum {     AUX_USE_ID = 1,     AUX_EXACT_MATCH,     AUX_MINIMUM_CRITERIA }; void   APIENTRY auxInitDisplayModePolicy(GLenum); GLenum APIENTRY auxInitDisplayModeID(GLint); GLenum APIENTRY auxGetDisplayModePolicy(void); GLint  APIENTRY auxGetDisplayModeID(void); GLenum APIENTRY auxGetDisplayMode(void);  #ifdef __cplusplus } #endif  #endif /* __GLAUX_H__ */