GLUT初始化函数
以下是GLUT.H头文件中关于GLUT初始化
/* GLUT initialization sub-API. */ extern void APIENTRY glutInit(int *argcp, char **argv); extern void APIENTRY glutInitDisplayMode(unsigned int mode); #if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 9) extern void APIENTRY glutInitDisplayString(const char *string); #endif extern void APIENTRY glutInitWindowPosition(int x, int y); extern void APIENTRY glutInitWindowSize(int width, int height); extern void APIENTRY glutMainLoop(void);
1. 首先看到每一个函数中都有一个 APIENTRY,从字面意思上来看他是“API入口”的意思。然后往前找我们可以看到有一个关于他的定义:
/* XXX This is from Win32's <windef.h> */ # ifndef APIENTRY # define GLUT_APIENTRY_DEFINED # if (_MSC_VER >= 800) || defined(_STDCALL_SUPPORTED) # define APIENTRY __stdcall # else # define APIENTRY # endif # endif
从中可以知道它是一个宏定义。当然这不是我们主要的讨论主题,不过我查过一些资料发现这个宏定义是关于win32中的API函数入口参数的传入方式,如_stdcall按从右至左的顺序压参数入栈,由被调用者把参数弹出栈。详见http://bbs.csdn.net/topics/50259130。
2.下面介绍每一个初始化函数。
(1)
void APIENTRY glutInit(int *argcp, char **argv) ;
功能:
使用GLUT时必须进行的初始化,一般使用main函数的参数进行初始化。
参数:
Argc:一个指针,指向从main()函数传递过来的没更改的argc变量。
Argv:一个指针,指向从main()函数传递过来的没更改的argv变量。
(2)
extern void APIENTRY glutInitDisplayMode(unsigned int mode);
功能:
定义显示方式。
参数:
mode:指定显示模式。
一般有8种模式,多种模式可以用or操作符(“|”)来连接。
GLUT_RGBA -选择RGBA窗口颜色,这是默认的颜色模式
GLUT_RGB -选择RGB窗口颜色模式。
GLUT_INDEX -选择颜色索引模式
GLUT_SINGLE -选择单缓冲窗口模式
GLUT_DOUBLE -选择双缓冲窗口(当需要更加流畅的画面时)
GLUT_ACCUM -选择累积缓冲区模式
GLUT_STENCIL -选择模板缓冲区模式
GLUT_DEPTH -选择深度缓冲区模式
(3)
#if (GLUT_API_VERSION >= 4 || GLUT_XLIB_IMPLEMENTATION >= 9) extern void APIENTRY glutInitDisplayString(const char *string); #endif
功能:
通过字符串来初始化显示模式。
参数:
string:display mode 的描述字符串。该字符串由0个或多个功能描述参数组成,每个功能描述参 数用空格或tab键隔开.
(4)
extern void APIENTRY glutInitWindowPosition(int x, int y);
功能:
初始化窗口的坐标位置(x,y).
参数:
x: 距窗口左边的像素大小。默认是-1,即随机决定。
y: 距窗口顶部的像素大小。默认是-1,即随机决定。
(5)
extern void APIENTRY glutInitWindowSize(int width, int height);
功能:
初始化窗口的大小,即长度和宽度。
参数:
width:窗口宽度。
height:窗口的高度。
(6)
extern void APIENTRY glutMainLoop(void);
功能:
glut程序进入事件循环.在一个glut程序中最多只能调用一次,且必须调用.一旦调用,会直到程序结 束才返回.调用后只能等待事件的发生(如鼠标移动,按下键,窗口移动等等),自动调用已注册 的函数并执行,直到程序结束。
参数:
void。
















