glut
2015-10-25 10:07
246 查看
Void
glutInit(int*argc,char**argv):
Argc:一个指针,指向从main()函数传递过来的没更改的argc变量;
Argv:一个指针,指向从main()函数传递过来的没更改的argv变量。
Void glutInitWindowPositon(int
x,int y):
X: 距离屏幕左边的像素数。-1是默认值,意思就是由窗口管理程序决定窗口出现在哪里。如果不使用默认值,那你就自己设置一个值。
Y:距离屏幕上边的像素数。和X一样。
Void glutInitWindowSize(int width,int height):
Width:窗口的宽度。
Height:窗口的高度。
Void glutInitDisplayMode(unsighed
int mode):
Mode参数是一个GLUT库里预定义的可能的布尔组合。你使用mode去指定颜色模式,数量和缓冲区类型。
颜色模式:
GLUT_RGBA或者GLUT_RGB。指定一个RGBA窗口,这是一个默认的颜色模式;
GLUT_INDEX:指定颜色索引模式;
选择单缓冲区或双缓冲区窗口。
1:GLUT_SINGLE.单缓冲区窗口。//当不需要用户交互时用单缓冲,需要用户交互时要用双缓冲
2:GLUT_DOUBLE.双缓冲区窗口,这是产生流畅动画必须选的。Glut使用双缓冲很简单只需要在显示回调函数中使用函数glutSwapBuffers()取代glFlush()即可。
指定一组特殊的缓冲的话,用下面的变量:
1:GLUT_ACCUM.累积缓冲区
2:GLUT_STENCIL.模板缓冲区
3:GLUT_DEPTH.深度缓冲区
Int glutCreateWindow(char*
title);
Title:设置窗口的标题。
glutCreateWindow()的返回值是一个窗口标识符。
void glutDisplayFunc(void
(*func)(void));
func: 当窗口需要被重绘是调用的函数的名称。
glutReshapeFunc是窗口改变的时候调用的函数,在这个里面可以根据缩放后的窗口重新设置,而glutDisplayFunc是显示的时候调用,可见改变窗口后调用glutReshapeFunc后还是会调用glutDisplayFunc进行显示。
使用函数glutMouseFunc(A),就可以帮我们注册我们的函数,当发生鼠标事件时就会自动调用A方法。
void glutMouseFunc(void(*func)(int button,int state,int x,int y));
func:处理鼠标click事件的函数的函数名。
第一个参数表明响应哪个鼠标键:GLUT_LEFT_BUTTON GLUT_MIDDLE_BUTTON GLUT_RIGHT_BUTTON
第二个参数表明鼠标的状态:GLUT_DOWN GLUT_UP
第三个参数提供了鼠标当前的窗口坐标
void glutMotionFunc(void(*func)(int x,int y));
这个函数是处理当鼠标键摁下时,鼠标拖动的事件。当鼠标拖动时,将每一帧都调用一次这个函数。
void glutSpecialFunc(void (*func)(int key,int x,int y));
这个函数是用来处理一些特殊键摁下的事件。参数key是这个键编号,在glut.h中预定义了这些常量:
#define GLUT_KEY_F1 1
#define GLUT_KEY_F2 2
#define GLUT_KEY_F3 3
void glutSetCursor(int cursor);
设置当前窗口的光标样式。
GLUT_CURSOR_RIGHT_ARROW指向右边的光标,
GLUT_CURSOR_LEFT_ARROW指向左边的光标,
GLUT_CURSOR_INFO成为手状,
GLUT_CURSOR_DESTROY呈叉状,
GLUT_CURSOR_HELP呈现问号的形状。
glutTimerFunc(unsigned int millis, void (*func)(int value), int value);
参数对应关系为:glutTimerFunc(毫秒数, 回调函数指针, 区别值);
写自己的回调函数 void OnTimer(int value);// 用value区分是哪个定时器
在函数里改变和位置有关的变量,然后调用glutPostRedisplay();用来重绘
最后再次调用glutTimerFunc,因为glut的定时器是调用一次才产生一次定时,所以如果要持续产生定时的话, 在定时函数末尾再次调用glutTimerFunc。
让程序进入一个永不结束的循环。一直等待处理下一个事件:voidglutMainLoop(void)。
glutInit(int*argc,char**argv):
Argc:一个指针,指向从main()函数传递过来的没更改的argc变量;
Argv:一个指针,指向从main()函数传递过来的没更改的argv变量。
Void glutInitWindowPositon(int
x,int y):
X: 距离屏幕左边的像素数。-1是默认值,意思就是由窗口管理程序决定窗口出现在哪里。如果不使用默认值,那你就自己设置一个值。
Y:距离屏幕上边的像素数。和X一样。
Void glutInitWindowSize(int width,int height):
Width:窗口的宽度。
Height:窗口的高度。
Void glutInitDisplayMode(unsighed
int mode):
Mode参数是一个GLUT库里预定义的可能的布尔组合。你使用mode去指定颜色模式,数量和缓冲区类型。
颜色模式:
GLUT_RGBA或者GLUT_RGB。指定一个RGBA窗口,这是一个默认的颜色模式;
GLUT_INDEX:指定颜色索引模式;
选择单缓冲区或双缓冲区窗口。
1:GLUT_SINGLE.单缓冲区窗口。//当不需要用户交互时用单缓冲,需要用户交互时要用双缓冲
2:GLUT_DOUBLE.双缓冲区窗口,这是产生流畅动画必须选的。Glut使用双缓冲很简单只需要在显示回调函数中使用函数glutSwapBuffers()取代glFlush()即可。
指定一组特殊的缓冲的话,用下面的变量:
1:GLUT_ACCUM.累积缓冲区
2:GLUT_STENCIL.模板缓冲区
3:GLUT_DEPTH.深度缓冲区
Int glutCreateWindow(char*
title);
Title:设置窗口的标题。
glutCreateWindow()的返回值是一个窗口标识符。
void glutDisplayFunc(void
(*func)(void));
func: 当窗口需要被重绘是调用的函数的名称。
glutReshapeFunc是窗口改变的时候调用的函数,在这个里面可以根据缩放后的窗口重新设置,而glutDisplayFunc是显示的时候调用,可见改变窗口后调用glutReshapeFunc后还是会调用glutDisplayFunc进行显示。
使用函数glutMouseFunc(A),就可以帮我们注册我们的函数,当发生鼠标事件时就会自动调用A方法。
void glutMouseFunc(void(*func)(int button,int state,int x,int y));
func:处理鼠标click事件的函数的函数名。
第一个参数表明响应哪个鼠标键:GLUT_LEFT_BUTTON GLUT_MIDDLE_BUTTON GLUT_RIGHT_BUTTON
第二个参数表明鼠标的状态:GLUT_DOWN GLUT_UP
第三个参数提供了鼠标当前的窗口坐标
void glutMotionFunc(void(*func)(int x,int y));
这个函数是处理当鼠标键摁下时,鼠标拖动的事件。当鼠标拖动时,将每一帧都调用一次这个函数。
void glutSpecialFunc(void (*func)(int key,int x,int y));
这个函数是用来处理一些特殊键摁下的事件。参数key是这个键编号,在glut.h中预定义了这些常量:
#define GLUT_KEY_F1 1
#define GLUT_KEY_F2 2
#define GLUT_KEY_F3 3
void glutSetCursor(int cursor);
设置当前窗口的光标样式。
GLUT_CURSOR_RIGHT_ARROW指向右边的光标,
GLUT_CURSOR_LEFT_ARROW指向左边的光标,
GLUT_CURSOR_INFO成为手状,
GLUT_CURSOR_DESTROY呈叉状,
GLUT_CURSOR_HELP呈现问号的形状。
glutTimerFunc(unsigned int millis, void (*func)(int value), int value);
参数对应关系为:glutTimerFunc(毫秒数, 回调函数指针, 区别值);
写自己的回调函数 void OnTimer(int value);// 用value区分是哪个定时器
在函数里改变和位置有关的变量,然后调用glutPostRedisplay();用来重绘
最后再次调用glutTimerFunc,因为glut的定时器是调用一次才产生一次定时,所以如果要持续产生定时的话, 在定时函数末尾再次调用glutTimerFunc。
让程序进入一个永不结束的循环。一直等待处理下一个事件:voidglutMainLoop(void)。
相关文章推荐
- 解决Vista系统OpenGL驱动问题的方法整理
- Delphi下OpenGL2d绘图之画四边形的方法
- Delphi下OpenGL2d绘图之画点的方法
- Delphi下OpenGL2d绘图之初始化流程详解
- Delphi使用OpenGL2d绘图之画图片Bmp的方法
- 通过OpenGL ES混合模式缩放视频缓冲区来适应显示尺寸
- VC运用OPENGL加载BMP纹理图的实现方法汇总
- java实现OpenGL ES纹理映射的方法
- java基于OpenGL ES实现渲染实例
- OpenGL坐标系介绍
- linux下opengl的安装(with qt)
- OpenGL超级宝典笔记——显示列表
- OpenGL超级宝典笔记——顶点数组
- OpenGL生成轮廓
- OpenGL超级宝典笔记——性能比较
- OpenGL超级宝典笔记——顶点缓冲区对象
- OpenGL超级宝典笔记——选择
- OpenGL超级宝典笔记——反馈
- OpenGL超级宝典笔记——遮挡查询
- OpenGL超级宝典笔记——深度纹理和阴影