opengl重要函数.docx
- 文档编号:6208656
- 上传时间:2023-01-04
- 格式:DOCX
- 页数:13
- 大小:19.64KB
opengl重要函数.docx
《opengl重要函数.docx》由会员分享,可在线阅读,更多相关《opengl重要函数.docx(13页珍藏版)》请在冰豆网上搜索。
opengl重要函数
【CG】GLUT库下的部分主要函数
一、初始化
1、voidglutInit(int*argc,char**argv)
这个函数用来初始化GLUT库。
对应main函数的形式应是:
intmain(intargc,char*argv[]);
这个函数从main函数获取其两个参数。
2、voidglutInitWindowSize(intwidth,intheight);
voidglutInitWindowPosition(intx,inty);
这两个函数很好理解是设置glut程序要产生的窗口的大小和位置(左上角)。
以像素为单位。
3、voidglutInitDisplayMode(unsignedintmode);
设置图形显示模式。
参数mode的可选值为:
GLUT_RGBA:
当未指明GLUT—RGBA或GLUT—INDEX时,是默认使用的模式。
表明欲建立RGBA模式的窗口。
GLUT_RGB:
与GLUT—RGBA作用相同。
GLUT_INDEX:
指明为颜色索引模式。
GLUT_SINGLE:
只使用单缓存
GLUT_DOUBLE:
使用双缓存。
以避免把计算机作图的过程都表现出来,或者为了平滑地实现动画。
GLUT_ACCUM:
让窗口使用累加的缓存。
GLUT_ALPHA:
让颜色缓冲区使用alpha组件。
GLUT_DEPTH:
使用深度缓存。
GLUT_STENCIL:
使用模板缓存。
GLUT_MULTISAMPLE:
让窗口支持多例程。
GLUT_STEREO:
使窗口支持立体。
GLUT_LUMINACE:
luminance是亮度的意思。
但是很遗憾,在多数OpenGL平台上,不被支持。
二、事件处理(EventProcessing)
1、void glutMainLoop(void)
让glut程序进入事件循环。
在一个glut程序中最多只能调用一次。
一旦调用,会直到程序结束才返回。
2、glutReshapeFunc(void(GLUTCALLBACK*func)(intwidth,intheight))
注册当前窗口的形状变化回调函数。
当改变窗口大小时,该窗口的形状改变回调函数将被调用。
3、glutDisplayFunc(void(GLUTCALLBACK*func)(void))
注册当前窗口的显示回调函数,当一个窗口的图像层需要重新绘制时,GLUT将调用该窗口的的显示回调函数。
显示回调函数不带任何参数,它负责整个图像层的绘制。
我们的大部分工作将集中在这个函数中。
4、glutMouseFunc(void(GLUTCALLBACK*func)(intbutton,intstate,intx,inty))
设置鼠标器按键回调函数,当鼠标的左键、右键或中键被按下时触发被注册的函数执行。
5、glutMotionFunc(void(GLUTCALLBACK*func)(intx,inty))
设置鼠标器移动回调函数,当鼠标发生移动时执行被注册的函数。
6、glutKeyboardFunc(void(GLUTCALLBACK*func)(unsignedcharkey,intx,inty))
设置键盘回调函数,当键盘有键被按下是调用所注册的函数。
7、glutIdleFunc(void(GLUTCALLBACK*func)(void))
设置空闲回调函数,当CPU空闲时调用该函数。
三、窗口管理(WindowManagement)
1、intglutCreateWindow(char*name);
产生一个顶层的窗口。
name作为窗口的名字,也就是窗口标题栏显示的内容。
返回值是生成窗口的标记符,可用函数glutGetWindow()加以引用。
2、intglutCreateSubWindow(intwin,intx,inty,intwidth,intheight);
创建一个子窗口。
win是其父窗口的标记符。
x,y是相对父窗口的位移,以像素表示。
width,height是子窗口的宽和高。
3、voidglutSetWindow(intwin)
intglutGetWindow(void)
功能分别是:
设置标记符为win的窗口为当前窗口;返回当前窗口的标记符。
4、voidglutDestroyWindow(intwin)
销毁以win标记的窗口。
5、voidglutPostRedisplay(void)
将当前窗口打上标记,标记其需要再次显示。
6、voidglutSwapBuffers(void)
当窗口模式为双缓存时,此函数的功能就是把后台缓存的内容交换到前台显示。
当然,只有单缓存时,使用它的功能跟用glFlush()一样。
而使用双缓存是为了把完整图画一次性显示在窗口上,或者是为了实现动画。
7、voidglutPositionWindow(intx,inty)
改变当前窗口的位置:
当前窗口是顶层窗口时,x,y是相对于屏幕的的位移;当前窗口若是子窗口时,x,y是相对其父窗口原点的位移。
8、voidglutReshapeWindow(intwidth,intheight)
改变当前窗口的大小。
width,height是当前窗口新的宽度和高度值,当然只能是正值。
9、voidglutFullscreen(void)
让当前窗口全屏显示。
当前窗口是顶层窗口时才有效。
10、voidglutPopWindow(void)
voidglutPushWindow(void)
对顶层窗口和子窗口均有效。
改变当前窗口在栈中相对于其它窗口的次序。
11、voidglutShowWindow(void)
voidglutHideWindow(void)
voidglutIconifyWindow(void)
这三个函数作用是改变当前窗口的显示状态。
glutShowWindow让当前窗口可视(这时它还是可能被其它窗口挡住)。
glutHideWindow让当前窗口成为不可视状态。
glutIconifyWindow让当前窗口成为一个图标,也即是最小化。
12、glutSetWindowTitle(char*name);
glutSetIconTitle(char*name);
设置当前窗口(必须是顶层窗口)的标题和图标化时的标题。
13、glutSetCursor(intcursor);
设置当前窗口的光标样式。
cursor可选值有许多:
如GLUT_CURSOR_RIGHT_ARROW指向右边的光标,
GLUT_CURSOR_LEFT_ARROW指向左边的光标,GLUT_CURSOR_INFO成为手状。
GLUT_CURSOR_DESTROY呈叉状,GLUT_CURSOR_HELP呈现问号的形状。
四、窗口的覆盖管理
1、voidglutEstablishOverlay(void);
对当前窗口创建覆盖图层。
该覆盖图的模式由初始化显示模式函数glutDisplayMode()决定。
glutLayerGet(GLUT_OVERLAY_POSSIBLE)可用以设置对于当前窗口,是否允许产生由初始化显示模式函数规定其模式的覆盖图层。
2、voidglutUserLayer(GLenumlayer);
枚举量layer可选值为:
GLUT_NORMAL,GLUT_OVERLAY.分别选取正常位平面或覆盖平面。
3、voidglutRemoveLayer(void);
除去覆盖图。
当没有覆盖图层时,调用这条语句也是安全的,这时系统不做任何事。
4、voidglutPostOverlayRedisplay(void);
标记该覆盖图层为需要重新显示的状态。
5、voidglutShowOverlay(void);
voidglutHideOverlay(void);
显示当前窗口的覆盖图层;隐藏覆盖图层。
这两条语句即时执行。
注意一下,只有窗口可视时,使用glutShowOverlay才能使其覆盖图层可视。
当窗口被其他窗口遮挡时,其覆盖图层也被遮挡从而不可视。
glut库下的主要函数:
一。
初始化
voidglutInit(int*argc,char**argv)
这个函数用来初始化GLUT库。
对应main函数的形式应是:
intmain(intargc,char*argv[]);
这个函数从main函数获取其两个参数。
voidglutInitWindowSize(intwidth,intheight);
voidglutInitWindowPosition(intx,inty);
这两个函数很好理解是设置glut程序要产生的窗口的大小和位置(左上角)。
以像素为单位。
voidglutInitDisplayMode(unsignedintmode);
设置图形显示模式。
参数mode的可选值为:
GLUT_RGBA:
当未指明GLUT—RGBA或GLUT—INDEX时,是默认使用的模式。
表明欲建立RGBA模式的窗口。
GLUT_RGB:
与GLUT—RGBA作用相同。
GLUT_INDEX:
指明为颜色索引模式。
GLUT_SINGLE:
只使用单缓存
GLUT_DOUBLE:
使用双缓存。
以避免把计算机作图的过程都表现出来,或者为了平滑地实现动画。
GLUT_ACCUM:
让窗口使用累加的缓存。
GLUT_ALPHA:
让颜色缓冲区使用alpha组件。
GLUT_DEPTH:
使用深度缓存。
GLUT_STENCIL:
使用模板缓存。
GLUT_MULTISAMPLE:
让窗口支持多例程。
GLUT_STEREO:
使窗口支持立体。
GLUT_LUMINACE:
luminance是亮度的意思。
但是很遗憾,在多数OpenGL平台上,不被支持。
--------------------------------------------------------------------------------
二。
事件处理(EventProcessing)
void glutMainLoop(void)
让glut程序进入事件循环。
在一个glut程序中最多只能调用一次。
一旦调用,会直到程序结束才返回。
--------------------------------------------------------------------------------
三。
窗口管理(WindowManagement)
intglutCreateWindow(char*name);
产生一个顶层的窗口。
name作为窗口的名字,也就是窗口标题栏显示的内容。
返回值是生成窗口的标记符,可用函数glutGetWindow()加以引用。
intglutCreateSubWindow(intwin,intx,inty,intwidth,intheight);
创建一个子窗口。
win是其父窗口的标记符。
x,y是相对父窗口的位移,以像素表示。
width,height是子窗口的宽和高。
voidglutSetWindow(intwin);
intglutGetWindow(void);
功能分别是:
设置标记符为win的窗口为当前窗口;返回当前窗口的标记符。
voidglutDestroyWindow(intwin);
销毁以win标记的窗口。
voidglutPostRedisplay(void);
将当前窗口打上标记,标记其需要再次显示。
voidglutSwapBuffers(void);
当窗口模式为双缓存时,此函数的功能就是把后台缓存的内容交换到前台显示。
当然,只有单缓存时,使用它的功能跟用glFlush()一样。
而使用双缓存是为了把完整图画一次性显示在窗口上,或者是为了实现动画。
voidglutPositionWindow(intx,inty);
改变当前窗口的位置:
当前窗口是顶层窗口时,x,y是相对于屏幕的的位移;当前窗口若是子窗口时,x,y是相对其父窗口原点的位移。
voidglutReshapeWindow(intwidth,intheight);
改变当前窗口的大小。
width,height是当前窗口新的宽度和高度值,当然只能是正值。
voidglutFullscreen(void);
让当前窗口全屏显示。
当前窗口是顶层窗口时才有效。
voidglutPopWindow(void);
voidglutPushWindow(void);
对顶层窗口和子窗口均有效。
改变当前窗口在栈中相对于其它窗口的次序。
voidglutShowWindow(void);
voidglutHideWindow(void);
voidglutIconifyWindow(void);
这三个函数作用是改变当前窗口的显示状态。
glutShowWindow让当前窗口可视(这时它还是可能被其它窗口挡住)。
glutHideWindow让当前窗口成为不可视状态。
glutIconifyWindow让当前窗口成为一个图标,也即是最小化。
glutSetWindowTitle(char*name);
glutSetIconTitle(char*name);
设置当前窗口(必须是顶层窗口)的标题和图标化时的标题。
glutSetCursor(intcursor);
设置当前窗口的光标样式。
cursor可选值有许多:
如GLUT_CURSOR_RIGHT_ARROW指向右边的光标,GLUT_CURSOR_LEFT_ARROW指向左边的光标,GLUT_CURSOR_INFO成为手状。
GLUT_CURSOR_DESTROY呈叉状,GLUT_CURSOR_HELP呈现问号的形状。
等等。
--------------------------------------------------------------------------------
四。
窗口的覆盖管理
voidglutEstablishOverlay(void);
对当前窗口创建覆盖图层。
该覆盖图的模式由初始化显示模式函数glutDisplayMode()决定。
glutLayerGet(GLUT_OVERLAY_POSSIBLE)可用以设置对于当前窗口,是否允许产生由初始化显示模式函数规定其模式的覆盖图层。
voidglutUserLayer(GLenumlayer);
枚举量layer可选值为:
GLUT_NORMAL,GLUT_OVERLAY.分别选取正常位平面或覆盖平面。
voidglutRemoveLayer(void);
除去覆盖图。
当没有覆盖图层时,调用这条语句也是安全的,这时系统不做任何事。
voidglutPostOverlayRedisplay(void);
标记该覆盖图层为需要重新显示的状态。
voidglutShowOverlay(void);
voidglutHideOverlay(void);
显示当前窗口的覆盖图层;隐藏覆盖图层。
这两条语句即时执行。
注意一下,只有窗口可视时,使用glutShowOverlay才能使其覆盖图层可视。
当窗口被其他窗口遮挡时,其覆盖图层也被遮挡从而不可视。
二。
事件处理(EventProcessing)
void glutMainLoop(void)
让glut程序进入事件循环。
在一个glut程序中最多只能调用一次。
一旦调用,会直到程序结束才返回。
三。
窗口管理(WindowManagement)
intglutCreateWindow(char*name);
产生一个顶层的窗口。
name作为窗口的名字,也就是窗口标题栏显示的内容。
返回值是生成窗口的标记符,可用函数glutGetWindow()加以引用。
intglutCreateSubWindow(intwin,intx,inty,intwidth,intheight);
创建一个子窗口。
win是其父窗口的标记符。
x,y是相对父窗口的位移,以像素表示。
width,height是子窗口的宽和高。
voidglutSetWindow(intwin);
intglutGetWindow(void);
功能分别是:
设置标记符为win的窗口为当前窗口;返回当前窗口的标记符。
voidglutDestroyWindow(intwin);
销毁以win标记的窗口。
voidglutPostRedisplay(void);
将当前窗口打上标记,标记其需要再次显示。
voidglutSwapBuffers(void);
当窗口模式为双缓存时,此函数的功能就是把后台缓存的内容交换到前台显示。
当然,只有单缓存时,使用它的功能跟用glFlush()一样。
而使用双缓存是为了把完整图画一次性显示在窗口上,或者是为了实现动画。
voidglutPositionWindow(intx,inty);
改变当前窗口的位置:
当前窗口是顶层窗口时,x,y是相对于屏幕的的位移;当前窗口若是子窗口时,x,y是相对其父窗口原点的位移。
voidglutReshapeWindow(intwidth,intheight);
改变当前窗口的大小。
width,height是当前窗口新的宽度和高度值,当然只能是正值。
voidglutFullscreen(void);
让当前窗口全屏显示。
当前窗口是顶层窗口时才有效。
voidglutPopWindow(void);
voidglutPushWindow(void);
对顶层窗口和子窗口均有效。
改变当前窗口在栈中相对于其它窗口的次序。
voidglutShowWindow(void);
voidglutHideWindow(void);
voidglutIconifyWindow(void);
这三个函数作用是改变当前窗口的显示状态。
glutShowWindow让当前窗口可视(这时它还是可能被其它窗口挡住)。
glutHideWindow让当前窗口成为不可视状态。
glutIconifyWindow让当前窗口成为一个图标,也即是最小化。
glutSetWindowTitle(char*name);
glutSetIconTitle(char*name);
设置当前窗口(必须是顶层窗口)的标题和图标化时的标题。
glutSetCursor(intcursor);
设置当前窗口的光标样式。
cursor可选值有许多:
如GLUT_CURSOR_RIGHT_ARROW指向右边的光标,GLUT_CURSOR_LEFT_ARROW指向左边的光标,GLUT_CURSOR_INFO成为手状。
GLUT_CURSOR_DESTROY呈叉状,GLUT_CURSOR_HELP呈现问号的形状。
等等。
四。
窗口的覆盖管理
voidglutEstablishOverlay(void);
对当前窗口创建覆盖图层。
该覆盖图的模式由初始化显示模式函数glutDisplayMode()决定。
glutLayerGet(GLUT_OVERLAY_POSSIBLE)可用以设置对于当前窗口,是否允许产生由初始化显示模式函数规定其模式的覆盖图层。
voidglutUserLayer(GLenumlayer);
枚举量layer可选值为:
GLUT_NORMAL,GLUT_OVERLAY.分别选取正常位平面或覆盖平面。
voidglutRemoveLayer(void);
除去覆盖图。
当没有覆盖图层时,调用这条语句也是安全的,这时系统不做任何事。
voidglutPostOverlayRedisplay(void);
标记该覆盖图层为需要重新显示的状态。
voidglutShowOverlay(void);
voidglutHideOverlay(void);
显示当前窗口的覆盖图层;隐藏覆盖图层。
这两条语句即时执行。
注意一下,只有窗口可视时,使用glutShowOverlay才能使其覆盖图层可视。
当窗口被其他窗口遮挡时,其覆盖图层也被遮挡从而不可视。
III.GLUT
glut-anintroductiontotheOpenGLUtilityToolkit
glutAddMenuEntry-addsamenuentrytothebottomofthecurrentmenu.
glutAddSubMenu-addsasub-menutriggertothebottomofthecurrentmenu.
glutAttachMenu-attaches/detachesamousebuttonforthecurrentwindowtotheidentifierofthecurrentmenu
glutBitmapCharacter-rendersabitmapcharacterusingOpenGL.
glutBitmapWidth-returnsthewidth/lengthofabitmapcharacter/string.
glutButtonBoxFunc-setsthedial&buttonboxbuttoncallbackforthecurrentwindow.
glutChangeToMenuEntry-changesthespecifiedmenuiteminthecurrentmenuintoamenuentry.
glutChangeToSubMenu-changesthespecifiedmenuiteminthecurrentmenuintoasub-menutrigger.
glutCopyColormap-copiest
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- opengl 重要 函数