设为首页 加入收藏

TOP

OpenGL超级宝典学习笔记——位图
2015-02-25 22:43:21 来源: 作者: 【 】 浏览:28
Tags:OpenGL 超级 宝典 学习 笔记 —位图

最初的电子计算机,只能显示单色(绿色或琥珀色)图形,每一个像素只有两种状态打开和关闭。在计算器图形学前期,图像数据是用位图来表示的,位图就是一系列的0和1,表示打开或关闭的像素值。下图就是用位图表示的一匹马:


image


下图是同一匹马的灰度图,在这个像素图中有256种不同强度的灰度级。


image


位图这个术语也常应用于包含灰度级和全彩色的图像数据,特别是在Windows平台上有相应的位图格式.BMP文件。严格地讲,这是对位图这个术语的误用。在此处(正确地说),位图是只有打开和关闭这两种值的二进制图。我们用像素图来表示那些包含全彩色和强度值的图像数据。


?


位图是从底往上构建的,也就是说位图的第一行数据代表着位图图像的最底部的一行。下面是一个例子,创建一个512X512的窗口,在窗口中填充16行、16列篝火图像的位图:


image


效果:


image


?


在这个例子中,我们故意设置OpenGL的投影与窗口的大小匹配,这样我们就相当于用窗口的坐标来指定位图的位置。然而这样的方式有时不太方便,所以OpenGL提供了另外一个可选的函数,允许你设置光栅的位置为窗口的坐标,从而忽略变换矩阵和投影对坐标的影响。


void glWindowPos2i(GLint x, GLint y);


设置光栅位置时需要注意的一个地方,在glRasterPos或者glWindowPos调用之前设置的颜色将被当做位图的颜色。在glRasterPos和glWindowPos之后调用glColor不会影响位图的颜色。


?


最终我们调用绘制位图的命令,把位图绘制到颜色缓冲区。


glBitmap(32, 32, 0.0, 0.0, 32.0, 0.0, fire);


glBitmap函数把图像数据拷贝到颜色缓冲区的当前的光栅位置,并且可以进行可选的移动光栅位置的操作。


void glBitmap(GLsize width, GLsize height, GLfloat xorig, GLfloat yorig, GLfloat xmove, GLfloat ymove, GLubyte *bitmap);


头两个参数指定为位图的宽和高,xorig和yorig指定位图数据的原点。xmove和ymove指定在渲染完位图之后,光栅位置往x轴和y轴移动多少个像素。bitmap是一个指向位图数据的指针。PS:当一幅位图被绘制时,图像中只有位模式为1的片段才会在颜色缓冲区中被创建,为0则不会影响当前的颜色缓冲区。


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇OpenGL超级宝典学习笔记——像素图 下一篇OpenGL超级宝典学习笔记——操作..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: