OpenGL图元的颜色属性

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

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

2、指定着色模型

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

 1 void Star(void)
 2 {
 3
 4     GLfloat r = 0.8f;
 5     GLfloat PointA[2] = { 0, r };
 6     GLfloat PointB[2] = { -r*sin(0.4*Pi), r*cos(0.4*Pi) };
 7     GLfloat PointC[2] = { -r*sin(Pi / 5), -r*cos(Pi / 5) };
 8     GLfloat PointD[2] = { r*sin(Pi / 5), -r*cos(Pi / 5) };
 9     GLfloat PointE[2] = { r*sin(0.4*Pi), r*cos(0.4*Pi) };
10
11     glLineWidth(8.0f);//线宽,需在glBegin前设置
12 //    glEnable(GL_LINE_STIPPLE);//启用虚线
13 //    glLineStipple(1,1);
14
15     glClear(GL_COLOR_BUFFER_BIT);
16
17     glBegin(GL_LINE_LOOP);
18     glVertex2fv(PointA);
19     glColor3f(1.0f, 0, 0);
20     glVertex2fv(PointC);
21     glColor3f(0, 1.0f, 0);
22     glVertex2fv(PointE);
23     glColor3f(0, 0, 1.0f);
24     glVertex2fv(PointB);
25     glColor3f(1.0,1.0,1.0);
26     glVertex2fv(PointD);
27
28     glEnd();
29
30     glFinish();
31 }

效果如下:

补充:

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

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

时间: 2024-10-10 08:09:57

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

OpenGL学习笔记——颜色

每个像素的颜色信息存储方式: RGBA模式:有些图形硬件可以使用抖动来增加可以显示的颜色数量(抖动在默认情况下是开启的). 颜色索引:可用颜色数量受限于颜色映射表的大小以及可用的位平面的数量. 在程序执行早期,设置颜色显示模式,当颜色显示模式初始化之后就无法进行更改了,在程序执行期间根据顶点颜色确定每个几何图元的颜色.如果启用了光照,它的颜色取决于变换矩阵与表面法线以及其他材料属性的交互效果.在执行光照计算后,程序所选择的着色模式(单调着色或平滑着色)随之生效.接着图元被光栅化(转换为二维图像)

OpenGL光照和颜色

OpenGL光照和颜色 转自:http://www.cnblogs.com/kekec/archive/2011/08/16/2140789.html OpenGL场景中模型颜色的产生,大致为如下的流程图所描述:++ ++++++  ++++++  ++++++  ++++++ (1)当不开启光照时,使用顶点颜色来产生整个表面的颜色. 用glShadeModel可以设置表面内部像素颜色产生的方式.GL_FLAT/GL_SMOOTH. ++ (2)一般而言,开启光照后,在场景中至少需要有一个光源(

在使用shape的同时,用代码修改shape的颜色属性

Android里面经常会使用shape来定制一些View的背景 可以修改View的背景颜色,形状等属性 一般情况下,shape都是在xml文件里面写死了,今天遇到一个需求,View的形状是圆角的,但是颜色是在代码里面设置的 最开始的思路是先在代码里给View设置颜色,再在shape里面设置solid属性为透明色 <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="htt

CSS3新增颜色属性

CSS颜色属性复习 color name 颜色英文名称命名(如red,blue,pink,white等) HEX方式 十六进制方式(#FF0000,#B9B9B9等) rgb方式 三原色配色方式(rgb(255,0,00)) 这几种方式都是常用到的颜色属性,本人使用较多的是HEX方式.CSS3中新增了几种颜色属性. CSS3新增颜色属性 1.RGBA模式 2.HSL模式 3.HSLA模式 1.RGBA模式 rgba在之前一遍博客中已经提及过,a表示的是透明度,取值范围为0~1,rgb分别是红绿蓝

Android5.0常用颜色属性说明

在使用Eclipse的时代,我们很少去在style文件给整个应用或者Activity去设定颜色,那是因为即使设置也不会提升用户的视觉效果.但是材料设计号称让没有设计功底的人也能做出漂亮的App,那我们今天就来看看在Androi5.0中常用的颜色属性. 我们可以先定义一个style,然后在这个style中设定每一个Activity或者整个App的颜色,最后在清单文件中来给某个Activity设置主题即可.代码如下: <style name="AppTheme.NoActionBar"

熟悉css/css3颜色属性

原文:熟悉css/css3颜色属性 颜色属性无处不在.字体要用颜色,背景可以有颜色,粒子特效更是离不开颜色.本文参考了一些资料简单总结下以备日后查阅. css中颜色的定义方式: 十六进制色 RGB & RGBA HSL & HSLA 颜色名 十六进制色 个人最喜欢的一种颜色表达方式. 十六进制颜色是这样规定的:#RRGGBB,其中的RR(红色).GG(绿色).BB(蓝色)十六进制整数规定了颜色的成分.所有值必须介于 0 与 FF 之间. 生成随机颜色: function getRandom

Android Theme.AppCompat 中,你应该熟悉的颜色属性

创建一个 Android 工程,第一步,也是必不可少的一步,就是定制 Application 主题样式.利用系统诸多属性定义 App 各种 View 的默认样式,能够减少 layout 文件中很多重复性的属性设置代码.在开发者官网 R.attr 栏目中,Google 列出了所有 Android SDK 中的系统级属性.如何取舍,如何区分,又有哪些常用的属性呢?本文就来列举颜色相关的一些属性介绍,以供参考. 通常,在 res/values/styles.xml 文件中定义的 application

CSS背景颜色属性值转换

<!DOCTYPE html> <html><head><meta charset="UTF-8"> <title>CSS背景颜色属性值转换</title> <style type="text/css"> .top_tips { position:relative; width:1000px; margin:20px auto; padding:10px; color:#272727

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

css颜色属性 在css中用color属性规定文本的颜色. 默认值是not specified 有继承性,在javascript中语法是object.style.color="#FF0000" 取值方法 1,英文单词color:name;规定颜色值为颜色名称的颜色. 但是英文单词能够表达的颜色是有局限性的,不是所有的颜色都有英文名字,就像所有的颜色也不会都有中文字一样. 2,RGB(red红色,green绿色,blue蓝色) rgb格式,格式rgb(0,0,0): rgb格式,其实 就