1.2 OpenGL架构
OpenGL支持多个平台,包括Windows、Liunx、MacOS、Unix。如果应用程序没有大量使用操作系统相关的调用,那么在不同的平台之间移植OpenGL程序会相当简单。由于Windows在桌面操作系统中占了绝对优势,因此在Winodows下开发OpenGL的应用程序还是我们的第一选择。
在Windows应用程序中,OpenGL的实现和GDI、DirectX都不同,GDI是通过显示设备接口Display Device Interface经过显卡驱动程序和显卡硬件交互。DirectX则绕过驱动程序,直接通过硬件抽象层或硬件仿真层同硬件打交道。OpenGL则通过一个3D设备驱动接口3DDI,再通过显卡厂商提供的驱动程序对硬件进行访问,如图1-1所示。
图1-1 三种图形接口在Windows上的实现
由于OpenGL是3D图形的底层图形库,没有提供几何实体图元,不能直接用以描述渲染场景。一个典型的OpenGL应用程序在屏幕上显示图形的主要步骤如下:
构造几何要素(点、线、面、多边形、位图等),创建对象的数学描述;
在3D空间中放置对象,并选择适当的观察点;
将对象的数学描述和颜色信息转换为屏幕上的像素;
对像素或对象数据进行纹理映射后进行光栅化;
针对光栅化后的对象片元进行操作,送到帧缓冲中;
在屏幕显示图形。
图1-2是OpenGL渲染的整个流程,其中的一些概念将在后续的章节中详细说明。
图1-2 OpenGL渲染流程