关键词不能为空

当前您在: 主页 > 英语 >

OpenGL中常用的GLUT函数库讲解

作者:高考题库网
来源:https://www.bjmy2z.cn/gaokao
2021-03-03 12:46
tags:

-

2021年3月3日发(作者:特卖场)


OpenGL


中常用的



GLUT


函数库



GLUT


函数说明



一、初始化



void


glutInit(


int


* argc,


char


** argv)



这个函数用来初始化


GLUT


库。对应



main


函数的形式应是:



int main(int argc,char*


argv[]);


这个函数从



main


函数获取其两个参数。



1



void


glutInitWindowSize(


int


width,


int


height);


2



void



glutInitWind owPosition(


int


x,


int


y);


< p>
设置


glut


程序要产生的窗口的大小和位置(左 上角)。以像素为单位。



void


glutInitDisplayMode(unsigned


int


mode);



设置图形显示模式。参数


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








使用模板缓存。



< br>GLUT_MULTISAMPLE


:让窗口支持多例程。




GLUT_STEREO









使窗口支持立体。



?



?



?



?



?



?



?



?



?



?



?



GLUT_LUMINACE:





luminance


是亮度的意思。但是很遗憾,在多数


Ope


nGL


平台上,不被支持。



二、事件处理(


Event Processing




void glutMainLoop(void)




glut


程序进入事件循环。在一个


glut


程序中最多只能调用一次。一旦调用,会直到程


序结束 才返回。




三、窗口管理(


Window Management




int


glutCreateWindow(


char


* name);



产生一个顶层的窗口。


name


作为窗口的名字,也就是窗口标题栏显示的内容。


< p>
返回值是生成窗口的标记符,可用函数


glutGetWindow()< /p>


加以引用。



int


glutCreateSubWindow(


int


win,


int


x,


int


y,


int


width,


int


height);



创建一个子窗口。


win


是其父窗口的标记符。


x,y


是相对父窗口的位 移,以像素表示。



width,height


是子窗口的宽和高。



void


glutSetWindow(


int


win);


int


glutGetWindow(


void


);



功能分别是:设置标记符为


win


的窗口为当前窗口;返回当前窗口的标记符。



void


glutDestroyWindow(


int


win);



销毁以



win


标记的窗口。



void


glutPostRedisplay(


void


);



将当前窗口打上标记,标记其需要再次显示。



void


glutSwapBuffers(


void


);



当窗口模式为双缓存时,


此函数的 功能就是把后台缓存的内容交换到前台显示。


当然,


只有


单缓存时,使用它的功能跟用


glFlush()

一样。



而使用双缓存是为了把完整图画一次性显示在窗口 上,或者是为了实现动画。



void


glutPositionWindow(


int


x,


int


y);


< p>
改变当前窗口的位置:当前窗口是顶层窗口时,


x,y

是相对于屏幕的的位移;当前窗口若是


子窗口时,


x,y< /p>


是相对其父窗口原点的位移。



void


glutReshapeWindow(


int


width,


int


height);



改变当前窗口的大小。



width,height


是当前窗口新的宽度和高度值,当然只能是正 值。



void


glutFullscreen(


void


);



让当前窗口全屏显示。当前窗口是顶层窗口时才有效。



void


glutPopWindow(

void


);


void


glutPushWindow(


void


);



对顶层窗口和子窗口均有效。改变当前窗口在栈中相对于其 它窗口的次序。



void


glut ShowWindow(


void


);


void


glutHideWindow(


void


);


void



glu tIconifyWindow(


void


);



这三个函数作用是改变当前窗口的显示状态。



glutShowWindow


让当前窗口可视(这时它还是可能被其它窗口挡 住)。



glutHideWindow


让当前窗口成为不可视状态。



glutIconifyWi ndow


让当前窗口成为一个图标,也即是最小化。



void glutSetWindowTitle(char* name);


void glutSetIconTitle(char* name);


设置当前窗口(必须是顶层窗口)的标题和图标化时的标题。



void


glutSetCursor(


int


cursor);



设置当前窗口的光标样式。



cursor


可选值有许多:如


GLUT_ CURSOR_RIGHT_ARROW


指向右边的光标,


GL UT_CURSOR_LEFT_ARROW


指向左边的光标,


GLUT_CURSOR_INFO


成为手状。



GLUT_CURSOR_DESTROY


呈叉状,


GLUT_CURSOR_HELP


呈现问号的形状。等等。




四、窗口的覆盖管理



void


glutEstablishOverlay(


void


);



对当前窗口创建覆盖图层。该覆盖图的模式由初始化显示模 式函数


glutDisplayMode()



定。



glutLayerGet(GLUT_OVERLAY_POSSIBLE); //


可用以设置对于当前窗口,


是否允许产生由初始化


显示模式函数规定其模式的覆盖图层。



void


glutUserLayer(GLenum layer);



枚举量


laye r


可选值为:


GLUT_NORMAL,GLUT_OVERL AY.


分别选取正常位平面或覆盖


平面。



void


glutRemoveLayer(


void


);



除去覆盖图。当没有覆盖图层时,调用这条语句也是安全的 ,这时系统不做任何事。



void


glutPostOverlayRedisplay(


void


);



标记该覆盖图层为需要重新显示的状态。



void


glutShowOverlay(


void


);


void


glutHideOverlay(


void


);



显示当前窗口的覆盖图层;隐藏覆盖图层。这两条语句即时 执行。


注意一下,只有窗口可视


时,


使 用


glutShowOverlay


才能使其覆盖图层可视。< /p>


当窗口被其他窗口遮挡时,


其覆盖图


层也 被遮挡从而不可视。



五、菜单管理



int


glutCreateMenu(


void


(*func)(


int


value))



当点击菜单时


,

< br>调用回调函数


func



val ue


为传递给回调函数的数值


,


它由所 选择的菜单条


目对应的整数值所决定。



这个函数创建一个新的弹出式菜单


,


并返回一个唯一的标识次 菜单的整型标识符


,


并将新建


的弹出菜 单与


func


函数关联在一起


,


这样


,


当选择此菜单中的一个菜单条目时


,


调用回调函数


func.


void


glutSetMenu(


int


menu);


int


glutGetMenu(


void


);



设置当前菜单


;

< br>获取当前菜单的标识符



void


glutDestroyMenu(


int


menu);



删除指定的菜单



void


glutAddMenuEntry(


char


* name,


int


value);



添加一个菜单条目



void


glutAddSubMenu(


char


* name,


int


menu);



在当前菜单的底部增加一个子菜单的触发条目



void


glutChangeToMenuEntry(


int


entry,


char


* name,


int


value);



更改当前菜单中指定菜单项



void


glutChangeToSubMenu(


int


entry,


char


* name,


int


menu);



将指定的当前菜单中菜单项变为子菜单触发条目



void


glutRemoveMenuItem(


int


entry);



删除指定的菜单项



void


glutAttachMenu(


int


button);


void


glutDetachMenu(


int


button);



把当前窗口的一个鼠标按键与当前菜单关联起来

< p>
;


解除鼠标按键与弹出式菜单的关联关系。




六、注册回调



void


glutDisplayFunc(


void


(*func)(


void


) );



为当前窗口设置显示回调函数



void


glutOverlayDisplayFunc(


void


(*func)(


void


) );



注册当前窗口的重叠层的显示回调函数



void


glutReshapeFunc(


void


(*Func)(


int


width,


int


height) );



指定当窗口的大小改变时调用的函数



void


glutKeyboardFunc(


void


(*func) (unsigned


char


key,


int


x,


int


y) );



注册当前窗口的键盘回调函数



void


glutMouseFunc(


void


(*func) (


int


button,


int


state,


int


x,


int


y));



注册当前窗口的鼠标回调函数



fun c


为注册的鼠标回调函数


,


这个函数完 成鼠标事件的处理



button


为鼠 标的按键


,


为以下定义的常量:




GLUT_LEFT_BUTTON



鼠标左键



GLUT_MIDDLE_BUTTON



鼠标中键



GLUT_RIGHT_BUTTON



鼠标右键



state


为鼠标按键的动作


,


为以下定义的常量:

< p>



GLUT_UP



鼠标释放



GLUT_DOWN



鼠标按下


< /p>


x,y


为鼠标按下式


,

< br>光标相对于窗口左上角的位置



void



glutMotionFu nc(


void



(*func)(


int



x,


int



y));


void


< br>glutPassiveMotionFunc(


void



(*func)(


int


x,


int


y));



设置移动回调函数


;


设置当前鼠标移动函数



Func


为注册的鼠标移动函数



x,y


为鼠标按下式


,

光标相对于窗口左上角的位置



当鼠标在窗口中按下并移动 时调用


glutMotionFunc


注册的回调函数



当鼠标在窗口中移动时调用


glutPass iveMotionFunc


注册的回调函数



void


glutVisibilityFunc(


void


(*func) (


int


state) );



设置当前窗口的可视回调函数



Func


为指定的可视回调函数



state


表示窗口的可视性


,

< p>
为以下常量


:

-


-


-


-


-


-


-


-



本文更新与2021-03-03 12:46,由作者提供,不代表本网站立场,转载请注明出处:https://www.bjmy2z.cn/gaokao/700035.html

OpenGL中常用的GLUT函数库讲解的相关文章