OpenGL(1) GLUT窗口图层初始化函数API

来源:互联网 发布:php pdo exec execute 编辑:程序博客网 时间:2024/06/06 01:25


/*GLUT初始化函数*//* GLUT initialization sub-API. */GLUTAPI void APIENTRY glutInit(int *argcp, char **argv);//初始化GLUT//#if defined(_WIN32) && !defined(GLUT_DISABLE_ATEXIT_HACK)GLUTAPI void APIENTRY __glutInitWithExit(int *argcp, char **argv, void (__cdecl *exitfunc)(int));#ifndef GLUT_BUILDING_LIBstatic void APIENTRY glutInit_ATEXIT_HACK(int *argcp, char **argv) { __glutInitWithExit(argcp, argv, exit); }#define glutInit glutInit_ATEXIT_HACK#endif#endifGLUTAPI void APIENTRY glutInitDisplayMode(unsigned int mode);/*Mode――可以指定下列显示模式 Mode参数是一个GLUT库里预定义的可能的布尔组合。你使用mode去指定颜色模式,数量和缓冲区类型。 指定颜色模式的预定义常量有: 1:GLUT_RGBA或者GLUT_RGB。指定一个RGBA窗口,这是一个默认的颜色模式。 2:GLUT_INDEX。指定颜色索引模式。 这个显示模式还允许你选择单缓冲区或双缓冲区窗口。 1:GLUT_SINGLE.单缓冲区窗口。 2:GLUT_BUFFER.双缓冲区窗口,这是产生流畅动画必须选的。 还可以指定更多,如果你想指定一组特殊的缓冲的话,用下面的变量: 1:GLUT_ACCUM.累积缓冲区。 2:GLUT_STENCIL.模板缓冲区。 3:GLUT_DEPTH.深度缓冲区。 glutInitDisplayMode(GLUT_RGB|GLUT_SINGLE|GLUT|DEPTH); */#if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 9)GLUTAPI void APIENTRY glutInitDisplayString(const char *string);#endif//GLUTAPI void APIENTRY glutInitWindowPosition(int x, int y);/*X: 距离屏幕左边的像素数。-1是默认值,意思就是由窗口管理程序决定窗口出现在哪里。如果不使用默认值,那你就自己设置一个值。 Y:距离屏幕上边的像素数。和X一样。*/GLUTAPI void APIENTRY glutInitWindowSize(int width, int height);/*Width:窗口的宽度。 Height:窗口的高度。 同样width,height也只是一个参考数字。避免使用负数。 */GLUTAPI void APIENTRY glutMainLoop(void);/*glutMainLoop进入GLUT事件处理循环,让所有的与“事件”有关的函数调用无限循环。glutMainLoop进入GLUT事件处理循环。在一个GLUT程序中,这个例程被调用一次 。一旦被调用,这个程序将永远不会返回 。它将调用必要的任何已注册的回调。*//* GLUT window sub-API. 窗口管理*/GLUTAPI int APIENTRY glutCreateWindow(const char *title);/*调用函数glutCreateWindow()来创建窗口了。 Int glutCreateWindow(char* title); 参数: Title:设置窗口的标题。 glutCreateWindow(“GLUT Tutorial”); */#if defined(_WIN32) && !defined(GLUT_DISABLE_ATEXIT_HACK)GLUTAPI int APIENTRY __glutCreateWindowWithExit(const char *title, void (__cdecl *exitfunc)(int));#ifndef GLUT_BUILDING_LIBstatic int APIENTRY glutCreateWindow_ATEXIT_HACK(const char *title) { return __glutCreateWindowWithExit(title, exit); }#define glutCreateWindow glutCreateWindow_ATEXIT_HACK#endif#endifGLUTAPI int APIENTRY glutCreateSubWindow(int win, int x, int y, int width, int height);/*创建子窗口win:Identifier of the subwindow's parent window.(子窗口的父窗口的标识符)x:Window X location in pixels relative to parent window's origin.(以像素为单位相对于父窗口的起点的X窗口的位置)y:     Window Y location in pixels relative to parent window's origin.width:Width in pixels.(宽度(以像素为单位))height:Height in pixels.*/GLUTAPI void APIENTRY glutDestroyWindow(int win);/*销毁以win标记的窗口。*/GLUTAPI void APIENTRY glutPostRedisplay(void);/*将当前窗口打上标记,标记其需要再次显示。*/#if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 11)GLUTAPI void APIENTRY glutPostWindowRedisplay(int win);#endifGLUTAPI void APIENTRY glutSwapBuffers(void);/* 当窗口模式为双缓存时,此函数的功能就是把后台缓存的内容交换到前台 显示。当然,只有单缓存时,使用它的功能跟用glFlush()一样。 */GLUTAPI int APIENTRY glutGetWindow(void);GLUTAPI void APIENTRY glutSetWindow(int win);GLUTAPI void APIENTRY glutSetWindowTitle(const char *title);GLUTAPI void APIENTRY glutSetIconTitle(const char *title);/*设置当前窗口(必须是顶层窗口)的标题和图标化时的标题*/GLUTAPI void APIENTRY glutPositionWindow(int x, int y);/* 改变当前窗口的位置:当前窗口是顶层窗口时,x,y是相对于屏幕的的位移; 当前窗口若是子窗口时,x,y是相对其父窗口原点的位移。 */GLUTAPI void APIENTRY glutReshapeWindow(int width, int height);/* 改变当前窗口的大小*/GLUTAPI void APIENTRY glutPopWindow(void);GLUTAPI void APIENTRY glutPushWindow(void);/* 对顶层窗口和子窗口均有效。改变当前窗口在栈中相对于其它窗口的次序。*/GLUTAPI void APIENTRY glutIconifyWindow(void);/*让当前窗口成为一个图标,也即是最小化*/GLUTAPI void APIENTRY glutShowWindow(void);/*让当前窗口可视(这时它还是可能被其它窗口挡住)*/GLUTAPI void APIENTRY glutHideWindow(void);/*让当前窗口成为不可视状态*/#if (GLUT_API_VERSION >= 3)GLUTAPI void APIENTRY glutFullScreen(void);/*让当前窗口全屏显示。当前窗口是顶层窗口时才有效。*/GLUTAPI void APIENTRY glutSetCursor(int cursor);/*设置当前窗口的光标样式。 cursor可选值有许多:如GLUT_CURSOR_RIGHT_ARROW指向右边的光标,GLUT_CURSOR_LEFT_ARROW指向左边的光标,GLUT_CURSOR_INFO成为手状。 GLUT_CURSOR_DESTROY呈叉状,GLUT_CURSOR_HELP呈现问号的形状。*/#if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 9)GLUTAPI void APIENTRY glutWarpPointer(int x, int y);#endif/* GLUT overlay sub-API. 窗口的覆盖管理*/GLUTAPI void APIENTRY glutEstablishOverlay(void);/*对当前窗口创建覆盖图层。该覆盖图的模式由初始化显示模式函数glutDisplayMode()决定。glutLayerGet(GLUT_OVERLAY_POSSIBLE)可用以设置对于当前窗口,是否允许产生由初始化显示模式函数规定其模式的覆盖图层*/GLUTAPI void APIENTRY glutRemoveOverlay(void);/*除去覆盖图。当没有覆盖图层时,调用这条语句也是安全的,这时系统不做任何事。*/GLUTAPI void APIENTRY glutUseLayer(GLenum layer);/*枚举量layer可选值为:GLUT_NORMAL,GLUT_OVERLAY.分别选取正常位平面或覆盖平面。 */GLUTAPI void APIENTRY glutPostOverlayRedisplay(void);/*标记该覆盖图层为需要重新显示的状态。 */#if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 11)GLUTAPI void APIENTRY glutPostWindowOverlayRedisplay(int win);/*标记该覆盖图层为需要重新显示的状态。 */#endifGLUTAPI void APIENTRY glutShowOverlay(void);GLUTAPI void APIENTRY glutHideOverlay(void);/*显示当前窗口的覆盖图层;隐藏覆盖图层。这两条语句即时执行。注意一下,只有窗口可视时,使用glutShowOverlay才能使其覆盖图层可视。当窗口被其他窗口遮挡时,其覆盖图层也被遮挡从而不可视*/#endif


0 0