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。