一、颜色

void myDisplay(void)
{glClear(GL_COLOR_BUFFER_BIT);glPointSize(10);//设置点大小,要放在glBegin之前glColor3f(0.0f, 1.0f, 0.0f);//设置颜色为绿色(RGB)//只要后面不改变颜色,后面画图都是绿色glBegin(GL_POINTS);//glBegin和glEnd之间画点/或线等glVertex2f(0.3f, 0.3f);glVertex2f(0.3f, -0.3f);glEnd();glColor3f(1.0f, 0.0f, 0.0f);//这里改颜色为红色//不会修改前面两个点本来的绿色,只对后面的生效//所以矩形框是红色的glRectf(-0.2f, -0.2f, 0.2f, 0.2f);glFlush();
}

上面是个小例子。

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

1. RGBA颜色
RGBA模式中,每一个像素会保存以下数据:R值(红色分量)、G值(绿色分量)、B值(蓝色分量)和A值(alpha分量)。其中红、绿、蓝三种颜色相组合,就可以得到我们所需要的各种颜色,而alpha不直接影响颜色,它将留待以后介绍。
在RGBA模式下选择颜色是十分简单的事情,只需要一个函数就可以搞定。
glColor*系列函数可以用于设置颜色,其中三个参数的版本可以指定R、G、B的值,而A值采用默认;四个参数的版本可以分别指定R、G、B、A的值。例如:
void glColor3f(GLfloat red, GLfloat green, GLfloat blue);
void glColor4f(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);
(3f表示有三个浮点参数,4f表示有三个浮点参数)
将浮点数作为参数,其中0.0表示不使用该种颜色,而1.0表示将该种颜色用到最多。例如:
glColor3f(1.0f, 0.0f, 0.0f);    表示不使用绿、蓝色,而将红色使用最多,于是得到最纯净的红色。
glColor3f(0.0f, 1.0f, 1.0f);    表示使用绿、蓝色到最多,而不使用红色。混合的效果就是浅蓝色。
glColor3f(0.5f, 0.5f, 0.5f);    表示各种颜色使用一半,效果为灰色。
注意:浮点数可以精确到小数点后若干位,这并不表示计算机就可以显示如此多种颜色。实际上,计算机可以显示的颜色种数将由硬件决定。如果OpenGL找不到精确的颜色,会进行类似“四舍五入”的处理。

注意:glColor系列函数,在参数类型不同时,表示“最大”颜色的值也不同。
采用f和d做后缀的函数,以1.0表示最大的使用。
采用b做后缀的函数,以127表示最大的使用。
采用ub做后缀的函数,以255表示最大的使用。
采用s做后缀的函数,以32767表示最大的使用。
采用us做后缀的函数,以65535表示最大的使用。

2. 索引颜色

先略过。

OpenGL入门-2-颜色相关推荐

  1. OpenGL入门:窗口开启、改变窗口背景颜色

    OpenGL入门 开启一个窗口: 运用OpenGL在窗口中绘制图形 显示一个窗口 利用OpenGL修改窗口背景颜色 改变颜色的闪烁 开启一个窗口: // Include for GLFW header ...

  2. OpenGL入门学习[二] 绘制简单的几何图形

    OpenGL入门学习[二] 本次课程所要讲的是绘制简单的几何图形,在实际绘制之前,让我们先熟悉一些概念. 一.点.直线和多边形 我们知道数学(具体的说,是几何学)中有点.直线和多边形的概念,但这些概念 ...

  3. OpenGL 入门 17:立方体贴图

    立方体贴图(Cube Map) 立方体贴图是由"上下左右前后"6个2D纹理合并成的一张纹理.与2D纹理使用(u,v)坐标采样不同的是,立方体纹理使用一个方向向量进行采样. 1. 方 ...

  4. 最全面的openGL 入门学习

    自己在找openGL学习资料的时候,找到此篇openGL入门学习(虽然不是移动开发,但给我提供了非常好的思路),所以转一下让更多人知道,本文来自http://www.cppblog.com/doing ...

  5. OpenGL入门二——变换

    OpenGL入门二--变换 一.预备知识 二.实现 三.控制 四.预览与源码 一.预备知识 齐次坐标:https://blog.csdn.net/zhanxi1992/article/details/ ...

  6. OpenGL入门学习 (转)

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

  7. OpenGL入门学习[三]

    OpenGL入门学习[三] http://xiaxveliang.blog.163.com/blog/static/2970803420126246501930/ OpenGL入门学习[十一] 我们在 ...

  8. OpenGL入门北斗星点绘制

    ** OpenGL入门–北斗星点的绘制 C++代码 唯一遇到的问题就是glFlush()这个函数的问题 #include <GL/glut.h> #include<gl/GLU.h& ...

  9. 【待完善】OpenGL入门学习

    严正声明:本文转载自网络,但具体出处未知.如果有读者了解,请联系我更正. 为了阅读方便,我对文字格式进行了修改,并填补了缺少的图片. 我尊重每位作者的权益,如果本文存在侵权行为,请联系我删除并道歉. ...

  10. 【转载】OpenGL入门学习

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

最新文章

  1. 2020腾讯广告算法大赛十强名单出炉!
  2. 缓存初解(四)---Ibatis的缓存配置+Ehcache
  3. Repeater控件结合UpdatePanel实现Ajax分页和删除功能
  4. 16行代码AC——例题6-4破损的键盘(Broken Keyboard,UVa 11988)——解题报告
  5. 挑选合适自己的一门编程语言
  6. ipython是解释器吗_Ipython 解释器
  7. 百度缺的不是狼性,而是鲁滨逊
  8. awt中监听输入框textField
  9. php数组如何插入,PHP如何在数组指定位置插入单元
  10. Linux vlan间路由配置,VLAN间路由
  11. Android手机便携式wifi的使用及无线数据传输(主要针对XP系统)
  12. 张掖百公里,再次折戟
  13. OpenCV 学习笔记(mean shift 算法)
  14. 英文版权声明_传统文化 | 中国著名旅游景点的英文表达—上海
  15. 课时1:Vitis HLS的工作机制——Vitis HLS教程
  16. eighth week(1)
  17. Linux qt教程 qt入门(一)
  18. matlab东大教授_杜睿 - 东南大学 - 数学学院
  19. WWDC 2016 | Siri 新技能 Get!帮你发微信、叫滴滴、支付宝转账
  20. canon老的一体机在win10上无法直接安装成功

热门文章

  1. 红帽资深解决方案架构师魏新宇:云原生应用构建之路
  2. 金融科技:中国农行研发中心DevOps规划与实践
  3. 配置Tomcat使用https协议(配置SSL协议)
  4. Apache2.2.21安装图解
  5. showModalDialog 使用详解
  6. Java描述设计模式(20):命令模式
  7. 常用MySQ调优策略及相关分享:学习随记
  8. HDR Tone Mapping
  9. 【计算机视觉】【矿泉水瓶水位测量】--Matlab与C++实现
  10. 蚂蚁金服ATEC城市峰会上海举行,三大发布迎接金融科技2019