OpenGL学习——函数语法(数据类型,函数命名方式,辅助库,平台独立性)
2008-05-27 19:50
471 查看
OpenGL的数据类型
为了便于OpenGL在各种平台上移植,OpenGL定义了自己的数据类型。如果你愿意也可用这些数据类型对应的标准C的数据类型来替代。如OpenGL也定义GLvoid类型,如果用C语言编写,可以用它替代void类型。不同的C编译器或环境对各种C变量的大小和内存分布都有自己的规则。使用OpenGL定义的数据类型就可以隔离开这些不同。表3-2列出了Win32操作系统中OpenGL的数据类型及相应的C数据类型,为了便于识别,使用了后缀。在本书中,我将会使用这些后缀。以后你也可发现OpenGL的许多函数名字也是这种后缀来命名的。
所有的数据类型都以GL开头,表示是OpenGL。紧跟在后面的大多是它们相应的C数据类型。一些开始有个u表示是无符号的数据类型,如:ubyte表示是无符号的字节。也给出了更多的描述名字的方法,如:size表示一个值的长度。GLsizei表示是一个GL变量,且参数的大小是一个整型。 C lamp是用于颜色的。这种数据类型以f和d结尾表示实型或双精度型数据类型。GLboolean变量用于标示True和False;GLenum用于枚举型变量; GLbitfield 用于包含二进制位的区域的变量。 指针和数据组没有特别的考虑。一个包含10个GLshort变量的数组可以简单的定义如下:GLshort shorts[10];包含10个GLdouble变量的指针的数组可以定义如下:
GLdouble *double[10];一些指针型用于曲面造型的。这将在后面的章节中讲到。
函数命名方式 OpenGL 的函数的命名方式可以告诉你你所使用的函数来自哪个库,及这个函数有几个参数和参数的类型。所有的函数都有一个词根来描述函数在OpenGL中相应的命令。例如:glColor3f() 有一个词根color。gl- 前缀描述的是这个函数来自gl库(看一下表3-1);-3f后缀表示函数有三个实型参数。所有的OpenGL函数是如下格式:
<库前缀><根命令><参数的数目><参数的类型>。
图3-1所示为OpenGL函数的保各部分组成。
这个示例函数带有后缀3f表示有三个实型参数。另外的有三个整型参数(glColor3i()),三个双精度型参数(glColor3d())。这种添加了参数个数的命名方式可以使我们不用查看就能很容易的记住函数列表的个数。有一些glColor有四个参数来表示alpha[eryar:即透明度 J ]值。在本书的参考部分,这些函数将以库的前缀和词根表列出。因此所有的变量类型 (glColor3f, glColor4f, glColor3i, 等等 ) 只将列表在glColor下面。
辅助库 通过本章的提醒你将会学使用辅助库来学习OpenGL。OpenGL的辅助库是一些特殊的函数,这些函数本来是用于初学者做简单的练习之用,因此这些函数不能在所有的OpenGL平台上使用,在Windows NT环境下可以使用这些函数。这些函数使用简单,它们可以用于窗口管理、输入输出处理以及绘制一些简单的三维形体。为了使OpenGL的应用程序具有良好的移植性,在使用OpenGL辅助库的时候应谨慎。
平台独立性 OpenGL是一种有力的、灵活的绘制三维图形的API,它的300多条命令包含了三维中的一切东西,从设置材质颜色、反射效果到旋转和复杂的坐标变换。你会对OpenGL没有一条函数或命令涉及到窗口或屏幕管理而感到吃惊。另外,也没有键盘输入和鼠标交互的函数。由此可见,OpenGL的主要目的就是要做到平台独立性。在不同的平台中创建和打开窗口是用的不同的方法。即使OpenGL有关于打开窗口的命令,你是会用OpenGL的命令还是会用操作系统的API来打开一个窗口呢? 另外一个与平台有关的就是处理键盘和鼠标的输入事件。假如所有的操作系统都一样地处理,我们只需一个环境就可以了,这就没有必要 ” open ” API了。
为了便于OpenGL在各种平台上移植,OpenGL定义了自己的数据类型。如果你愿意也可用这些数据类型对应的标准C的数据类型来替代。如OpenGL也定义GLvoid类型,如果用C语言编写,可以用它替代void类型。不同的C编译器或环境对各种C变量的大小和内存分布都有自己的规则。使用OpenGL定义的数据类型就可以隔离开这些不同。表3-2列出了Win32操作系统中OpenGL的数据类型及相应的C数据类型,为了便于识别,使用了后缀。在本书中,我将会使用这些后缀。以后你也可发现OpenGL的许多函数名字也是这种后缀来命名的。
表3-2OpenGL数据类型及对应的C数据类型 | |||
OpenGL数据类型 | 数据类型 | 相应的C数据类型 | 后缀 |
GLbyte | 8-bit integer | Signed char | b |
GLshort | 16-bit integer | Short | s |
G l int,GLsizei | 32-bit integer | long | l |
GLfloat,GLclampf | 32-bit floating point | Float | f |
GLdouble,GLclampd | 64-bit floating point | Double | d |
GLubyte,GLboolean | 8-bit unsigned integer | Unsigned char | ub |
GLushort | 16-bit unsigned integer | Unsigned short | us |
GLuint, GLenum, GLbitfield | 32-bit unsigned integer | Unsigned long | ui |
GLdouble *double[10];一些指针型用于曲面造型的。这将在后面的章节中讲到。
函数命名方式 OpenGL 的函数的命名方式可以告诉你你所使用的函数来自哪个库,及这个函数有几个参数和参数的类型。所有的函数都有一个词根来描述函数在OpenGL中相应的命令。例如:glColor3f() 有一个词根color。gl- 前缀描述的是这个函数来自gl库(看一下表3-1);-3f后缀表示函数有三个实型参数。所有的OpenGL函数是如下格式:
<库前缀><根命令><参数的数目><参数的类型>。
图3-1所示为OpenGL函数的保各部分组成。
这个示例函数带有后缀3f表示有三个实型参数。另外的有三个整型参数(glColor3i()),三个双精度型参数(glColor3d())。这种添加了参数个数的命名方式可以使我们不用查看就能很容易的记住函数列表的个数。有一些glColor有四个参数来表示alpha[eryar:即透明度 J ]值。在本书的参考部分,这些函数将以库的前缀和词根表列出。因此所有的变量类型 (glColor3f, glColor4f, glColor3i, 等等 ) 只将列表在glColor下面。
辅助库 通过本章的提醒你将会学使用辅助库来学习OpenGL。OpenGL的辅助库是一些特殊的函数,这些函数本来是用于初学者做简单的练习之用,因此这些函数不能在所有的OpenGL平台上使用,在Windows NT环境下可以使用这些函数。这些函数使用简单,它们可以用于窗口管理、输入输出处理以及绘制一些简单的三维形体。为了使OpenGL的应用程序具有良好的移植性,在使用OpenGL辅助库的时候应谨慎。
平台独立性 OpenGL是一种有力的、灵活的绘制三维图形的API,它的300多条命令包含了三维中的一切东西,从设置材质颜色、反射效果到旋转和复杂的坐标变换。你会对OpenGL没有一条函数或命令涉及到窗口或屏幕管理而感到吃惊。另外,也没有键盘输入和鼠标交互的函数。由此可见,OpenGL的主要目的就是要做到平台独立性。在不同的平台中创建和打开窗口是用的不同的方法。即使OpenGL有关于打开窗口的命令,你是会用OpenGL的命令还是会用操作系统的API来打开一个窗口呢? 另外一个与平台有关的就是处理键盘和鼠标的输入事件。假如所有的操作系统都一样地处理,我们只需一个环境就可以了,这就没有必要 ” open ” API了。
相关文章推荐
- JavaScript---基本语法学习(一)JavaScript概述、Java和JavaScript的区别、和HTML结合方式、数据类型、运算符和表达式
- OpenGL学习02_函数语法与命名规范
- JS高级程序设计学习笔记之第三章基本概念(语法,数据类型,流控制语句,函数)——查漏补缺
- Python3学习(一)-基础、数据类型、变量、字符串和编码、list&tuple、if、for、while、dict、set、函数与参数
- python 入门学习笔记之基本语法与基本数据类型
- Oracle语法温故(块结构、变量命名、数据类型、关系运算符、逻辑运算符)
- Java学习笔记四。设计模式、基本数据类型、包装类、异常、断言、包、访问权限、命名规范、jar
- C# 数据类型的引用类型、值类型内存存储方式以及区别; 函数参数传递的引用传递(址传递)、值传递区别
- JAVA学习(三):Java基础语法(变量、常量、数据类型、运算符与数据类型转换)
- JavaScript学习小结 —— 基础语法 ,数据类型与变量
- php学习基础篇之文档的语法结构、注释、变量、数据类型
- OpenGL基础图形编程 - OpenGL数据类型和函数名
- JavaScript 学习day01 (js的特点,组成,使用,语法和数据类型)
- Lua学习--基本语法&数据类型
- (3)JavaScript基础(基本语法:变量与数据类型、类型转换、运算符、流程控制、函数、对象、自定义对象、原型)
- C语言基础学习基本数据类型-变量的命名
- oracle PL/SQL的基本构成,块结构和基本语法要求,数据类型,变量定义,运算符和函数
- Oracle学习之基本语法(二)—操作符&数据类型
- C语言基础学习基本数据类型-字符专属的输入输出函数
- php学习第一章:PHP基础语法(一)之PHP数据类型与PHP常量