OpenGL支持两种颜色模式:一种是RGBA,一种是颜色索引模式。

1. RGBA颜色
RGBA模式中,每一个像素会保存以下数据:R值(红色分量)、G值(绿色分量)、B值(蓝色分量)和A值(alpha分量)。其中红、绿、蓝三种颜色相组合,就可以得到我们所需要的各种颜色,而alpha不直接影响颜色,它将留待以后介绍。
在RGBA模式下选择颜色是十分简单的事情,只需要一个函数就可以搞定。
glColor*系列函数可以用于设置颜色,其中三个参数的版本可以指定R、G、B的值,而A值采用默认;四个参数的版本可以分别指定R、G、B、A的值。

2、指定着色模型

OpenGL允许对同一个多边形的不同顶点设定不同的颜色,用上篇的五角星为例,依次设置顶点为红,绿,蓝,白。

 void Star(void)
{ GLfloat r = 0.8f;
GLfloat PointA[] = { , r };
GLfloat PointB[] = { -r*sin(0.4*Pi), r*cos(0.4*Pi) };
GLfloat PointC[] = { -r*sin(Pi / ), -r*cos(Pi / ) };
GLfloat PointD[] = { r*sin(Pi / ), -r*cos(Pi / ) };
GLfloat PointE[] = { r*sin(0.4*Pi), r*cos(0.4*Pi) }; glLineWidth(8.0f);//线宽,需在glBegin前设置
// glEnable(GL_LINE_STIPPLE);//启用虚线
// glLineStipple(1,1); glClear(GL_COLOR_BUFFER_BIT); glBegin(GL_LINE_LOOP);
glVertex2fv(PointA);
glColor3f(1.0f, , );
glVertex2fv(PointC);
glColor3f(, 1.0f, );
glVertex2fv(PointE);
glColor3f(, , 1.0f);
glVertex2fv(PointB);
glColor3f(1.0,1.0,1.0);
glVertex2fv(PointD); glEnd(); glFinish();
}

效果如下:

补充:

在默认RGBA模式下,2个颜色不同点之间的其余点,OpenGL会计算后填上颜色相近的点,使之有颜色渐变的效果。使用glShadeModel()函数可以关闭这种计算。

glShadeModel的使用方法:
glShadeModel(GL_SMOOTH);    // 平滑方式,这也是默认方式
glShadeModel(GL_FLAT);      // 单色方式

OpenGL图元的颜色属性的更多相关文章

  1. OpenGL光照和颜色

    OpenGL光照和颜色 转自:http://www.cnblogs.com/kekec/archive/2011/08/16/2140789.html OpenGL场景中模型颜色的产生,大致为如下的流 ...

  2. 熟悉css/css3颜色属性

    颜色属性无处不在.字体要用颜色,背景可以有颜色,粒子特效更是离不开颜色.本文参考了一些资料简单总结下以备日后查阅. css中颜色的定义方式: 十六进制色 RGB & RGBA HSL & ...

  3. Android5.0常用颜色属性说明

    在使用Eclipse的时代,我们很少去在style文件给整个应用或者Activity去设定颜色,那是因为即使设置也不会提升用户的视觉效果.但是材料设计号称让没有设计功底的人也能做出漂亮的App,那我们 ...

  4. 闲记 单元格与单元格之间的边 ///字体属性都是font开头,除了颜色属性 ///文本属性都是text开的,除了设置行高。

    这两天一直在做网页没有什么太大的问题,期间也考了一场试,对答案的时候老师讲了一些小知识,因此来记录一下. 单元格与单元格之间的边距(cellspaling) list-type-image可以使用图像 ...

  5. css颜色属性及设置颜色的地方

    css颜色属性 在css中用color属性规定文本的颜色. 默认值是not specified 有继承性,在javascript中语法是object.style.color="#FF0000 ...

  6. 这些Android系统样式中的颜色属性你知道吗?

    Android 系统样式中的颜色属性 推荐阅读看完后彻底搞清楚Android中的 Attr . Style .Theme 几个常用的颜色属性 先放上一张经典的图片,图片来自网络. 这张图在网上很是流传 ...

  7. 前端1-----CSS颜色属性,字体文本和背景属性,边框属性,margin和padding,盒模型,行内块转换,浮动,三大定位

    前端1-----CSS颜色属性,字体文本和背景属性,边框属性,margin和padding,盒模型,行内块转换,浮动,三大定位 一丶css选择器的优先级 行内 > id选择器 > 类选择器 ...

  8. bootstrap 按钮颜色属性

    bootstrap 按钮颜色属性有几种

  9. 利用CSS背景颜色属性使父级div背景透明同时避免子级标签透明。

    实现背景色透明效果的代码 实现各个浏览器中具备良好的透明特性的效果,IE中使用私有滤镜filter,高端浏览器使用CSS3中的rgba属性. 输入十六进制的颜色值以及透明度,自动在IE的过渡滤镜以及C ...

随机推荐

  1. centos Apache、php、mysql默认安装路径

    apache: 如果采用RPM包安装,安装路径应在 /etc/httpd目录下 apache配置文件:/etc/httpd/conf/httpd.conf Apache模块路径:/usr/sbin/a ...

  2. 9月9日HTML上午表单元素2(框架、样式表)

    五.框架 1.frameset是双标签框架集,如果使用框架集,当前页面不能有body. frameset属性:①cols代表左右拆分.cols=“300,*”表示左边框架宽300,右边宽剩余的宽度.* ...

  3. Flash Builder 4.7 破解

    http://litech.diandian.com/post/2013-03-22/40049178994 Adobe Flash Builder 4.7 For Mac 破解 和Photoshop ...

  4. Jsp与servlet的区别

     Jsp与servlet的区别 2011-12-09 16:27:47 分类: Java 1.jsp经编译后就变成了Servlet.(JSP的本质就是Servlet,JVM只能识别java的类,不能识 ...

  5. Java序列化的几种方式以及序列化的作用

    Java序列化的几种方式以及序列化的作用 本文着重讲解一下Java序列化的相关内容. 如果对Java序列化感兴趣的同学可以研究一下. 一.Java序列化的作用    有的时候我们想要把一个Java对象 ...

  6. sqlmap注入技巧收集

    收集了一些利用Sqlmap做注入测试的TIPS,其中也包含一点绕WAF的技巧,便于大家集中查阅,欢迎接楼补充.分享. TIP1 当我们注射的时候,判断注入 http://site/script?id= ...

  7. Yii2.0-生成二维码实例

    原文地址:http://www.yii-china.com/post/detail/19.html

  8. ASP.NET MVC Global.cs - 应用程序事件

    一.Application_End Application_End:网站关闭,或重启时,会触发该方法 二.Application_Start       第一个访问网站的用户会触发该方法. 通常会在该 ...

  9. oracle 特殊符号

    http://hi.baidu.com/wind_stay/blog/item/85113a6f6553a5d680cb4a0e.html oracle通配符,运算符的使用 用于where比较条件的有 ...

  10. Mysql函数:Last_insert_id()语法讲解

    Mysql函数可以实现许多我们需要的功能,下面介绍的Mysql函数Last_insert_id()就是其中之一,希望对您学习Mysql函数能有所帮助. 自动返回最后一个INSERT或 UPDATE 查 ...