liuem  

  OpenGL是图形硬件的一种软件接口(API),包括了大约250个函数,利用这些函数可以指定物体和操作,创建交互性应用程序。它的设计目标就是作为一种流线型、独立于硬件的接口,在不同的硬件平台上实现。

  OpenGL对屏幕上的图像进行渲染主要执行以下操作:

  1. 根据几何图元创建形状,建立物体的数学描述(OpenGL把点、直线、多边形、图像和位图作为基本图元);
  2. 在三维空间中排列物体,选择观察场景的有利视角;
  3. 计算所有物体的颜色,影响颜色的因素包括指定颜色,光照条件,纹理贴图等;
  4. 将物体及其颜色转换为屏幕像素(这个过程称为光栅化);

 基本概念

渲染是计算机根据模型创建图像的过程。

模型是根据几何图元构造的,几何图元包括点、直线和多边形,他们是通过顶点(vertex)指定的。  

像素是屏幕上放置的最小可视元素,像素最终构成屏幕上的渲染图像。

位平面是像素信息在内存中的组织形式,它是一块内存区域,保存了像素的1个位的信息。

帧缓冲区由位平面组织而成,保存了控制屏幕所有像素的颜色和强度信息。

OpenGL是一个状态机,设置它的各种状态,若不修改则这些状态将一直生效。这次状态变量包括控制当前视图和投影变换、直线和多边形点画模式、多边形绘图模式、光照位置、物体材料属性等。

OpenGL渲染管线

  

  几何数据经理的阶段包括求值器和顶点操作,而像素数据处理过程有所不同。这张图对OpenGL的渲染步骤有一个整体描述,不再细述。

 一些相关函数

  OpenGL工具函数库(GLU)利用低层函数执行诸如特定视图定向和投影设置矩阵等任务;

  所有窗口系统都提供了一个函数库,对窗口系统功能进行扩展,比如WGL函数对应着Windows到OpenGL的接口;

  OpenGL使用工具包(GLUT)是一个独立于窗口系统的工具包,因此不同窗口系统API的复杂性。主要包括以下一些函数:

  1. glutInit(int *argc, char **argv),对GLUT进行初始化,处理所有命令行参数;
  2. glutInitDisplayMode(unsigned int mode),指定使用RGBA还是颜色索引模式,单缓冲还是双缓冲,相关联的缓冲区等;
  3. glutInitWindowPosition(int x, int y)指定窗口左上角的位置;
  4. glutInitWindowSize(int width, int size)指定窗口大小;
  5. int glutCreateWindow(char *string)创建一个带有OpenGL渲染环节的窗口,为新窗口返回一个唯一的标识符; 
  6. glutDisplayFunc(* func)(voide)),一个事件回调函数,当GLUT确定一个窗口内容需要重新显示时,便会调用注册的那个函数;
  7. glutMainLoop(),进入主循环;
  8. glutReshapeFunc(void(* func) int w, int h))表示当窗口大小发生变化时应采取什么行动;
  9. glutKeyboardFunc(void(* func)(unsigned char key, int x, int y)),glutMouseFunc(void (*func)(int button, int state, int x, int y))挂接键盘和鼠标事件;
  10. glutMotionFunc(void(* func)(int x, int y)),注册一个函数,当鼠标按钮按下并移动鼠标时调用函数;
  11. glutIdleFunc(void(*func)(void)),注册一个函数,如果不存在其他尚未处理的事件时就执行这个函数;
posted on 2013-02-19 08:30  弈名  阅读(439)  评论(0编辑  收藏  举报