OpenGL系统设计-位图 字体(1)

 

位图 字体

OpenGL不仅是一个完整的3D渲染接口,同时也是一个非常高效的图像处理引擎。本章主要讨论OpenGL处理彩色像素和单位图的功能。

OpenGL并不会直接渲染图像,因为图像通常都是以特定的格式存储在文件里面,OpenGL不知道这些图像文件的格式,因此它只知道怎样渲染像素矩形,却不会对图像文件进行解码。如果前面所讲,使用TGABMPJPG文件都需要自己写解码代码。将像素数据解出来后,OpenGL就可以轻而易举的渲染了。

为了支持对像素矩形的渲染,除了基本的点、线、三角形、多边形等几何图元外,OpenGL还支持基于像素的数据类型(pixel-based primitives)。这些基于像素的数据类型包含了每一个像素点的颜色值,可以分为两类:位图(Bitmaps)和图像(Images)。

位图是一位的图像,包含每个像素的一位信息,它可以作为掩码来判断要修改覆盖哪个像素。使用glColor可以设置位图的当前颜色。

图像则包含了每个像素的全部颜色信息,如RGBA值。

当我们将类型BMPGIF等这样的图像文件数据进行解码得到了相信的颜色信息后,OpenGL就可以对这些颜色值进行光栅化。

 

如同渲染几何形体有一个流水线一样,像素渲染也有一个操作流水线。首先,从存储区域(如图像文件)读取像素数据,将其处理成OpenGL内部可以使用的格式,期间包括一些颜色变换以及字节交换的操作。然后使用片元操作(Fragment Operation)进行处理,最后将像素数据光栅化,渲染到帧缓冲区。整个流水线如图8-1所示。

 

 

 

8-1   像素渲染流水线

 

当然除了将像素数据渲染到帧缓冲区外,也可以将其从帧缓冲区复制到内存,或者变换到纹理映射空间,用于纹理贴图。

为了得到最佳性能,对像素的内部处理应该和硬件相匹配。例如,对于24位的帧缓冲区,8-8-8 RGB格式可能就是最好的匹配,但是10-10-10 RGB格式肯定会出问题。非缺省格式的变换即便成功,速度也会非常慢。

 

图像的位置是由光栅位置来决定的,它是将图像的左下角映射到空间中的一个点。如同顶点一样,光栅位置也可以变换和裁减。如果光栅位置在裁减检查时失败,那么OpenGL就会取消光栅化操作。

 

位图的渲染需要使用到的OpenGL命令主要有

glBitmap

glDrawPixels

glReadPixels

glCopyPixels

glCopyTex*Image

glRasterPos

 

下面我们来对这些常用的命令进行介绍。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值