OpenGL编程指南第四章:颜色

本文介绍OpenGL中的颜色处理过程,从设定颜色到最终显示在屏幕上所经历的步骤,包括光照处理、着色模式应用、光栅化及片段处理等。同时讨论了颜色存储格式和Dithering技术。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

计算机屏幕一个像素的颜色值由RGB(或RGBA,A并不直接用于颜色显示)三个分量组成;不同设备单个像素能显示的颜色数不用,存储颜色值的内存大小也不用,一般用bit来衡量,8-bit buffer能显示256种颜色。RGB各分量的值可以无歧义地用浮点数表示,范围是[0.0,1.0],1.0表示这个分量的颜色达到最强。

图元颜色

opengl设定颜色的api是glColor*,颜色设定以顶点为单位,图元的颜色进过流水线的处理才能到达屏幕:
1)顶点的颜色还要经过光照处理;
2)此时以图元顶点的颜色为基础,按选定的着色模式(shading model)对图元进行着色,得出图元内部的颜色;
3)接下来就是光栅化(rasterize,也即将图元转化成二维图像),这一步决定图像窗口坐标内的每个格子颜色、深度(z)、纹理坐标,这样的格子就是片段(fragment),纹理、雾、antialiasing这些效果也会被加诸片段之上;
5)最终片段的颜色和frame buffer中原有的像素颜色进行混合操作(alpha blending,dithering,bitwise logical operation),形成新的像素颜色。


RGB颜色存储格式
显示设备一般为每个分量分配一定的bit数(不一定相等),分量值存储为无符号整形;比如R有8 bit,那么存储的值为0,1...255,那么分别对应于浮点值0.0,1/255...1.0。


Dithering
一些现实设备使用Dithering技术来增加可以显示的颜色数目,打个比方,RGB分别只有一个bit宽度,那么只可以显示:black,white,red,blue,green,yellow,cyan,magenta这几种颜色,为了显示一块pink区域,可以在该区域内间隔显示red和white像素,这样看起来就感觉是pink了。


Color-Index模式
该模式使用一张颜色查找表和颜色索引来表示颜色,像素中存储的是索引值。


Shading Mode
有两种着色模式,flat和smooth,前者会使用某个顶点的颜色来个整个图元着色,后者会考虑所有顶点的颜色对图元内部的点进行着色(插值)。在flat模式下,选取那个顶点的颜色取决于图元类型,请参考原书。
0
OpenGL图形系统是一个软件接口 让程序员能够创建交互式程序 使用计算机图形学技术生成具有真实感的图像 本书是OpenGL ARB推荐的OpenGL 1 4版学习指南 本书首先阐述OpenGL的功能和计算机图形学基本知识 包括状态管理和几何体的绘制 模型变换 视点变换和投影变换 颜色和光照;然后深入探讨一些高级技术 包括反走样 雾阄 显示列表 图像处理 纹理映射 帧缓存 网格化 NURBS 选择和反馈等;同时讨论其他一些重要主题 像如何提高程序的性能 OpenGL扩展和跨平台技术等 本书只要求读者有一定的C语言基础和数学知识 适合所有对OpenGL编程感兴趣的读者阅读 OpenGL是一个功能强大的软件接口 用于绘制高质量的计算机图像 以及编写使用2D和3D几何物体及位图和图像的交互式应用程序 本书介绍OpenGLOpenGL实用库 内容全面 权威 被称为“OpenGL红宝书” 本书第三版针对的是OpenGL1.2版 而本版介绍了OpenGL1.3和1.4版新增的所有特性以及重要的OpenGL ARB OpenGL体系结构审核委员会 扩展 本书以清晰的语言阐述了OpenGL的功能以及众多计算机图形学基本技术 如构建和渲染3D模型 从不同的角度观察物体 使用着色 光照和纹理映射来提高图像的真实感;深入探讨了一些高级技术 其中包括纹理映射 反走样 雾效和大气效果 NURBS 图像处理等;讨论了其他一些重要主题 如提高性能 OpenGL扩展和跨平台技术等 ">OpenGL图形系统是一个软件接口 让程序员能够创建交互式程序 使用计算机图形学技术生成具有真实感的图像 本书是OpenGL ARB推荐的OpenGL 1 4版学习指南 本书首先阐述OpenGL的功能和计算机图形学基本知识 包括状态管理和几何 [更多]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值