1、
OpenGL建立三维模型的基本步骤:
实际上,从三维空间到二维平面,就如同用相机拍照一样,通常都要经历以下几个步骤(括号内表示的是相应的图形学概念):
第一步,将相机置于三角架上,让它对准三维景物(视点变换,Viewing Transformation);
第二步,将三维物体放在适当的位置(模型变换,Modeling Transformation );
第三步,选择相机镜头并调焦,使三维物体投影在二维胶片上(投影变换,Projection Transformation );
第四步,决定二维像片的大小(视口变换,Viewport Transformation )。
这样,一个三维空间里的物体就可以用相应的二维平面物体表示了,也就能在二维的计算机屏幕上正确显示了。
2、 OpenGL是一个状态机。他将一直处于所指定的各种状态中,直到修改这些状态为止。很多状态变量被称为模式,可以使用函数 glEnable()和glDisable()来启用和禁用他们。 glGetBooleanv()等6个函数可以用来向系统查询每个状态变量的当前值。对某些状态变量,可以使用更 具体的查询函数,如glGetlight*()等。另外,还可以使用函数 glPushAttrib()和glPopAttrib()将一组状态变量的值保存到属性堆栈中,暂时修改它们,然后再使用函数glPopAttrib()和glPopClientAttrib()恢复这些状态值,它们的效率比直接修改状态值可能更高。
3、OpenGL 的渲染流水线:
渲染指的是计算机根据模型创建图象。模型(或物体)是由几何图元构成的,而几何图元是通过顶点来指定的。最终渲染的图象由屏幕像素组成。 像素(pixel)是显示硬件能够放置到屏幕上的最小的可视元素。有关像素的信息(如颜色)在系统内存中被组织为 位面(bitplane)。位面构成了 帧缓存,后者包含图形显示设备为控制屏幕上所有像素的颜色和亮度所需的信息。
1、使用几何图元建立模型,从而得到物体的数学描述,OpenGL将点、直线、多边形、图形和位图视为 图元;
2、在三维空间排列物体,选择观察场景的有利位置;
3、计算所有物体的颜色。颜色可能是由应用程序指定的、根据光照条件确定的、将问题粘贴到物体上得到的,也可能是上述多种操作的结果;
4、将物体的数学描述和相关的颜色信息转换为屏幕像素,这被称为 光栅化。
当我们把绘制的图形传递给OpenGL后,OpenGL还要做许多才能完成3D空间到屏幕的投影。这一系列的过程称为 OpenGL渲染流水线。一般的渲染流水线过程有如下几步: 显示列表 求值程序 顶点操作 图元装配 像素操作 纹理装配 光栅化 片断操作
4、OpenGL的函数库:
1、 核心库 115个库函数,每个函数都以gl开头,这些函数是最基本的,它们可以在任何OpenGL的工作平台上应用。这些函数用于建立各种各样的形体,产生光照效果,进行反走样以及进行纹理映射,进行投影变换等等。由于这些核心函数有许多种形式并能够接受不同类型的参数,实际上这些函数可以派生出300多个函数。
2 、实用库:43个函数,每个函数以glu开头;是比OpenGL核心函数更高一层的函数,这些函数是通过调用核心函数来起作用的。它们可以在任何OpenGL的工作平台上应用。这些函数提供了十分简单的用法,从而减轻了开发者的编程负担。OpenGL的实用函数包括纹理映射、坐标变换、多边形分化、绘制一些如椭球、圆柱、茶壶等简单多边形实体等。这部分函数象核心函数一样在任何OpenGL平台都可以应用。
3、 辅助库:31个函数,每个函数以aux开头;这些函数本来是用于初学者做简单的练习之用,因此这些函数不能在所有的OpenGL平台上使用,在Windows NT环境下可以使用这些函数。这些函数使用简单,它们可以用于窗口管理、输入输出处理以及绘制一些简单的三维形体。为了使OpenGL的应用程序具有良好的移植性,在使用OpenGL辅助库的时候应谨慎。
4、 专用库函数,每种窗口都有一个用于扩展窗口系统功能,以支持OpenGL渲染的函数库。在使用X窗口系统的计算机中,提供了X窗口系统的OpenGL扩展(GLX),作为OpenGL的附加。GLX库函数的名称中包含前缀"glX"。在windows系统上,6个以wgl开头的函数提供了额windows和OpenGL之间的接口。
5、 OpenGL实用工具包(GLUT,OpenGL Utility Toolkit)是Mark Kilgard开发的一个独立于窗口系统的工具包,用于绕开窗口系统API的复杂性。GLUT函数名中包含前缀"glut"。
6、 Win32 API函数:5个函数,函数前面没有专用前缀;用于处理象素存储格式和双缓冲区,显然这些函数仅仅能够用于Win32系统而不能用于其他OpenGL平台。
实际上,从三维空间到二维平面,就如同用相机拍照一样,通常都要经历以下几个步骤(括号内表示的是相应的图形学概念):
第一步,将相机置于三角架上,让它对准三维景物(视点变换,Viewing Transformation);
第二步,将三维物体放在适当的位置(模型变换,Modeling Transformation );
第三步,选择相机镜头并调焦,使三维物体投影在二维胶片上(投影变换,Projection Transformation );
第四步,决定二维像片的大小(视口变换,Viewport Transformation )。
这样,一个三维空间里的物体就可以用相应的二维平面物体表示了,也就能在二维的计算机屏幕上正确显示了。
2、 OpenGL是一个状态机。他将一直处于所指定的各种状态中,直到修改这些状态为止。很多状态变量被称为模式,可以使用函数 glEnable()和glDisable()来启用和禁用他们。 glGetBooleanv()等6个函数可以用来向系统查询每个状态变量的当前值。对某些状态变量,可以使用更 具体的查询函数,如glGetlight*()等。另外,还可以使用函数 glPushAttrib()和glPopAttrib()将一组状态变量的值保存到属性堆栈中,暂时修改它们,然后再使用函数glPopAttrib()和glPopClientAttrib()恢复这些状态值,它们的效率比直接修改状态值可能更高。
3、OpenGL 的渲染流水线:
渲染指的是计算机根据模型创建图象。模型(或物体)是由几何图元构成的,而几何图元是通过顶点来指定的。最终渲染的图象由屏幕像素组成。 像素(pixel)是显示硬件能够放置到屏幕上的最小的可视元素。有关像素的信息(如颜色)在系统内存中被组织为 位面(bitplane)。位面构成了 帧缓存,后者包含图形显示设备为控制屏幕上所有像素的颜色和亮度所需的信息。
1、使用几何图元建立模型,从而得到物体的数学描述,OpenGL将点、直线、多边形、图形和位图视为 图元;
2、在三维空间排列物体,选择观察场景的有利位置;
3、计算所有物体的颜色。颜色可能是由应用程序指定的、根据光照条件确定的、将问题粘贴到物体上得到的,也可能是上述多种操作的结果;
4、将物体的数学描述和相关的颜色信息转换为屏幕像素,这被称为 光栅化。
当我们把绘制的图形传递给OpenGL后,OpenGL还要做许多才能完成3D空间到屏幕的投影。这一系列的过程称为 OpenGL渲染流水线。一般的渲染流水线过程有如下几步: 显示列表 求值程序 顶点操作 图元装配 像素操作 纹理装配 光栅化 片断操作
4、OpenGL的函数库:
1、 核心库 115个库函数,每个函数都以gl开头,这些函数是最基本的,它们可以在任何OpenGL的工作平台上应用。这些函数用于建立各种各样的形体,产生光照效果,进行反走样以及进行纹理映射,进行投影变换等等。由于这些核心函数有许多种形式并能够接受不同类型的参数,实际上这些函数可以派生出300多个函数。
2 、实用库:43个函数,每个函数以glu开头;是比OpenGL核心函数更高一层的函数,这些函数是通过调用核心函数来起作用的。它们可以在任何OpenGL的工作平台上应用。这些函数提供了十分简单的用法,从而减轻了开发者的编程负担。OpenGL的实用函数包括纹理映射、坐标变换、多边形分化、绘制一些如椭球、圆柱、茶壶等简单多边形实体等。这部分函数象核心函数一样在任何OpenGL平台都可以应用。
3、 辅助库:31个函数,每个函数以aux开头;这些函数本来是用于初学者做简单的练习之用,因此这些函数不能在所有的OpenGL平台上使用,在Windows NT环境下可以使用这些函数。这些函数使用简单,它们可以用于窗口管理、输入输出处理以及绘制一些简单的三维形体。为了使OpenGL的应用程序具有良好的移植性,在使用OpenGL辅助库的时候应谨慎。
4、 专用库函数,每种窗口都有一个用于扩展窗口系统功能,以支持OpenGL渲染的函数库。在使用X窗口系统的计算机中,提供了X窗口系统的OpenGL扩展(GLX),作为OpenGL的附加。GLX库函数的名称中包含前缀"glX"。在windows系统上,6个以wgl开头的函数提供了额windows和OpenGL之间的接口。
5、 OpenGL实用工具包(GLUT,OpenGL Utility Toolkit)是Mark Kilgard开发的一个独立于窗口系统的工具包,用于绕开窗口系统API的复杂性。GLUT函数名中包含前缀"glut"。
6、 Win32 API函数:5个函数,函数前面没有专用前缀;用于处理象素存储格式和双缓冲区,显然这些函数仅仅能够用于Win32系统而不能用于其他OpenGL平台。