1、OpenGL支持两种颜色模式:

  1>RGBA颜色模式 ,用 glClearColor 指定清空屏幕后的颜色,即“空颜色” 。

  2>索引颜色模式,用 glClearIndex 指定清空屏幕后的颜色,即“空颜色”。

2、在默认情况下,OpenGL会计算两点顶点之间的其它点,并为它们填上“合适”的颜色,使相邻的点的颜色值都比较接近。如果使用的是RGB模式,看起来就具有渐变的效果。如果是使用颜色索引模式,则其相邻点的索引值是接近的,如果将颜色表中接近的项设置成接近的颜色,则看起来也是渐变的效果。但如果颜色表中接近的项颜色却差距很大,则看起来可能是很奇怪的效果。
使用 glShadeModel 函数可以关闭这种计算,如果顶点的颜色不同,则将顶点之间的其它点全部设置为与某一个点相同。(直线以后指定的点的颜色为准,而多边形将以任意顶点的颜色为准,由实现决定。)为了避免这个不确定性,尽量在多边形中使用同一种颜色。

const float Pi = 3.1415926536f;
void TestColorIndex(void)
{
int i;
for (i = ; i < ; ++i)
//设置索引颜色模式下的颜色表,这里简答理解下就行,不必过多纠结
auxSetOneColor(i, (float)(i & 0x04), (float)(i & 0x02), (float)(i & 0x01));
//指定着色模型 GL_SMOOTH---平滑方式(也是默认模式) GL_FLAT---单色模式
glShadeModel(GL_FLAT);
glClear(GL_COLOR_BUFFER_BIT);
glBegin(GL_TRIANGLE_FAN);
glVertex2f(0.0f, 0.0f);
for (i = ; i <= ; ++i)
{
glIndexi(i);
glVertex2f(cos(i*Pi / ), sin(i*Pi / ));
}
glEnd();
glFlush();
} void CallColorIndex(void)
{
auxInitDisplayMode(AUX_SINGLE | AUX_INDEX);
auxInitPosition(, , , );
auxInitWindow(L"");
TestColorIndex();
Sleep( * );
}

    

3、指定清除屏幕后剩下的颜色,即空颜色:

void MyDisplay(void)
{
//RGB模式下,指定清除屏幕后拥有的颜色,即“空”的颜色 。索引颜色模式下用 glClearIndex 指定清除屏幕后的颜色
glClearColor(1.0, 0.0, 0.0, 0.0); //清除。GL_COLOR_BUFFER_BIT 表示清除颜色,当然了,还可以清除其他东西,这里不做过多介绍
glClear(GL_COLOR_BUFFER_BIT);
//表示让前面的OpenGL命令立即执行(而不是让它们在缓冲区等待),
glFlush();
}

   

   

OpenGL入门程序四:颜色模式的更多相关文章

  1. SCARA——OpenGL入门学习四(颜色)

    OpenGL入门学习[四] 本次学习的是颜色的选择.终于要走出黑白的世界了~~ OpenGL支持两种颜色模式:一种是RGBA,一种是颜色索引模式. 无论哪种颜色模式,计算机都必须为每一个像素保存一些数 ...

  2. OpenGL入门程序一:绘制简单的矩形

    #include <GL/glut.h> void MyDisplay(void); int main(int argc, char **argv) { //设置窗口的大小 glutIni ...

  3. OpenGL入门程序五:三维绘制

    1.现实世界观察一个物体的时候,可能涉及到的三维变化: 1>视图变化------从不同的角度观察. 2>模型变化------移动.旋转物体,计算机中当然还可以对物体进行缩放. 3>投 ...

  4. OpenGL入门程序三:点、线、面的绘制

    1.点: void TestPoint() { //点的大小默认为一个像素,通过下面的函数可以设置一点的大小 glPointSize(50.0f); glBegin(GL_POINTS); glVer ...

  5. OpenGL入门程序二:绘制简单的圆

    学习 绘制一个圆: ; const float Pi = 3.1415926536f; const float R = 0.5f; //绘制一个圆 void DrawCircle() { //绘制一个 ...

  6. OpenGL入门学习(四)

    http://blog.csdn.net/sun6255028/article/details/5090055 OpenGL支持两种颜色模式:一种是RGBA,一种是颜色索引模式.无论哪种颜色模式,计算 ...

  7. opengl入门学习

    OpenGL入门学习 说起编程作图,大概还有很多人想起TC的#include <graphics.h>吧? 但是各位是否想过,那些画面绚丽的PC游戏是如何编写出来的?就靠TC那可怜的640 ...

  8. OpenGL入门学习(转)

    OpenGL入门学习 http://www.cppblog.com/doing5552/archive/2009/01/08/71532.html 说起编程作图,大概还有很多人想起TC的#includ ...

  9. OpenGL入门学习(转载)

    说起编程作图,大概还有很多人想起TC的#include <graphics.h>吧? 但是各位是否想过,那些画面绚丽的PC游戏是如何编写出来的?就靠TC那可怜的640*480分辨率.16色 ...

随机推荐

  1. SQL Server 公用表表达式(CTE)实现递归的方法

    公用表表达式简介: 公用表表达式 (CTE) 可以认为是在单个 SELECT.INSERT.UPDATE.DELETE 或 CREATE VIEW 语句的执行范围内定义的临时结果集.CTE 与派生表类 ...

  2. JaveScript-简介

    1.JaveScript:脚本语言.(弱类型语言)可以写在head,也可以写在head里,同样可以写在html外面<script src=""></script& ...

  3. Django初级手册3-视图层与URL配置

    设计哲学 在Django中一个视图有指定函数和指定模版组成.对于某些特定的应用应该分成若干视图.例如博客系统 Blog主页面 详细页面入口 基于年的页面展示 基于月的页面展示 基于天的页面展示 评论行 ...

  4. 1:4 UI标签和通用标签

          UI标签:负责用户界面输出的标签. 非标单:例如错误信息提示的标签 fielderror,actionerror,actionmessagr:系统错误消息的自动显示           通 ...

  5. 如何安装Apache

    第一步:将Apache24解压到C盘根目录下 第二步:进入C:\Apache24\bin目录下 第三步:打开浏览器,网页中输入localhost,返回结果为It works!则说明Apache安装配置 ...

  6. cisco路由器 三层交换机简单环境配置实例(图)

    出处:http://www.jb51.NET/softjc/56600.html cisco路由器&三层交换机简单环境配置实例 一.网络拓扑图: 二.配置命令: 1.路由器的配置: inter ...

  7. 解析分布式锁之Redis实现(二)

    摘要:在前文中提及了实现分布式锁目前有三种流行方案,分别为基于数据库.Redis.Zookeeper的方案,本文主要阐述基于Redis的分布式锁,分布式架构设计如今在企业中被大量的应用,而在不同的分布 ...

  8. 07: python基础 零碎知识点

    目录: 1.1 python异常处理 1.2 三元运算,filter和map与lambda表达式结合使用举例 1.3 内置方法 1.4 动态导入模块 1.1 python异常处理返回顶部 1.Pyth ...

  9. 20145127《java程序设计》第三周学习总结

    教材学习内容总结 第四章 认识对象 4.1 类与对象 0.Java中有基本类型和类类型两个类型系统.本章主要讲的是类类型.java编写几乎都要使用对象,要产生对象必须先定义类.类是对象的设计图,对象是 ...

  10. 20145307陈俊达_安卓逆向分析_dex2jar&jd-gui的使用

    20145307陈俊达_安卓逆向分析_dex2jar&jd-gui的使用 引言 这次免考选择了四个项目,难度也是从简到难,最开始先写一个工具的使用 想要开发安卓首先要会编写代码,但是想要逆向分 ...