OpenGL学习02_函数语法与命名规范

OpenGL函数的命名规则函数的开头前缀为“gl”,并把组成函数的每个单词的首字母用大写形式表示(例如,glClearColor())。类似地,OpenGL还定义了一些以前缀GL_开头的常量,所有的单词都使用大写形式,并以下划线分隔(例如GL_COLOR_BUFFER_BIT)。

OpenGL函数中有一些似乎不相关的字母(例如glColor3f()和glVertex3f()中的“3f”)。确实,glColor3f()函数名中的“Color”部分就足以定义这个用于设置当前绘图颜色的函数。但是,OpenGL定义了这个函数的多个不同版本,以便使用不同类型的参数。具体地说,这个后缀中的“3”表示这个函数接受3个参数。Color函数还存在接受4个参数的版本。这个后缀中的“f”表示这些参数都是浮点数。OpenGL之所以为同一个函数定义了不同参数类型的版本,是为了允许用户根据自己的数据格式向OpenGL传递参数。

有些OpenGL函数可以在它们的参数中接受多达8种不同的数据类型。下表出了一些后缀字母,它们分别指定了OpenGL的ISO C实现所提供的数据类型。此外,下表还列出了对应的OpenGL类型定义。我们所使用的OpenGL实现可能并不完全与这种方案相对应。例如,OpenGL的C++或Ada实现就不需要完全遵循这种方案。

OpenGL学习02_函数语法与命名规范_第1张图片

因此,下面这两个函数调用是等价的。只不过第一个函数把顶点的坐标指定为32位的整数,第二个函数则把它们指定为单精度的浮点数。

    glVertex2i(1, 3);  
    glVertex2f(1.0, 3.0); 

注意:不同的OpenGL实现在选择用哪些C数据类型来表示OpenGL数据类型方面存在一些差异。如果坚持在自己的应用程序中使用OpenGL定义的数据类型,那么在不同的OpenGL实现之间移植代码时,就可以避免类型不匹配的问题。

有些OpenGL函数名的最后还有一个字母v,它表示这个函数所接受的参数是一个指向值向量(或数组)的指针,而不是一系列的单独参数。许多函数既有向量版本也有非向量版本,也有一些函数只接受单独的参数,另外还有一些函数要求至少有1个参数被指定为向量。下面这几行代码显示了既可以使用向量版本也可以使用非向量版本的函数来设置当前的绘图颜色:

    glColor3f(1.0, 0.0, 0.0);  
    GLfloat color_array[] = {1.0, 0.0, 0.0};  
    glColor3fv(color_array); 

最后,OpenGL还定义了GLvoid类型。这种类型最常用于那些接受指向值数组的指针为参数的OpenGL函数。

本文由CC原创总结,如需转载请注明出处:http://blog.csdn.net/oktears/article/details/42214739

你可能感兴趣的:(OpenGL)