《OpenGL ES应用开发实践指南:Android卷》—— 2.6 OpenGL颜色模型

2.6 OpenGL颜色模型

OpenGL使用累加RGB颜色模型,它只用了三种基本颜色:红色、绿色和蓝色。许多颜色都是通过把这三种基本颜色按不同比例混合在一起而创造的。例如,红色和绿色放在一起会生成黄色,红色和蓝色放在一起可以产生品红色,而蓝色和绿色放在一起就会创造出青色,把红色、绿色和蓝色放在一起,就能看见白色,如图2-8所示。

这个模型的工作原理与你可能在学校里学过的减色绘画模型(subtractive paint model)不同:在减色绘画模型里,加入蓝色和黄色制作出绿色,而加入很多颜色会产生黑棕色或者黑色。这是因为颜料不发光,而是吸收光;画上使用的颜色越多,光被吸收得越多,这幅画就会表现得越暗。
累加RGB模型遵循光本身的属性,当两柱不同颜色的光线混合在一起时,不会看见更暗的颜色,而是更亮的颜色。一场大雨过后,当我们观察天空中的彩虹时,我们实际上看到了可见光光谱中所有不同的颜色,它们可以合并成白色。
如果感兴趣,Wikipedia有更多的细节。
把颜色映射到显示屏上
OpenGL假定这些颜色相互之间是线性关系:一个值为0.5的红色,其亮度是值为0.25的红色的两倍;而一个值为1的红色的亮度是值为0.5的红色的两倍。这些基本的颜色值被限定在范围[0, 1]内,0代表缺少这个特定的基本颜色,而1代表那个颜色的最大强度。
这个颜色模型很好地映射到移动设备使用的显示屏和计算机屏幕上(然而,在13.3.3节中,我们会知道这个映射并不是真的一对一)。这些显示设备几乎总是使用这三种基本颜色:红色、绿色和蓝色(为了有“更纯的黄色”,有些设备可能用黄色作为另外一个基本颜色),0映射到一个未点亮的像素分量,而1映射到那个颜色的全亮度。使用这个颜色模型,人眼能看到的所有颜色几乎都可以被OpenGL渲染出来,并显示在屏幕上。
在第4章里,我们会学习更多关于颜色使用的内容。

时间: 2017-07-03

《OpenGL ES应用开发实践指南:Android卷》—— 2.6 OpenGL颜色模型的相关文章

《OpenGL ES应用开发实践指南:Android卷》—— 1.1 安装工具

1.1 安装工具 下面是开发Android OpenGL所需要的基本工具列表: 一台运行Windows.OS X或者Linux的计算机 Java开发包(JDK) Android软件开发包(SDK) 集成开发环境(IDE) 一个手机.平板电脑或者支持OpenGL ES 2.0的模拟器 你需要的第一个工具是一台适合开发的个人计算机:任何较新的计算机都可以,它需要能运行Windows.OS X或者Linux.在这台计算机上,你需要安装Java开发包,可以从Oracle的网站下载:当前,Google指定

《OpenGL ES应用开发实践指南:Android卷》—— 导读

前 言 Android刚刚经历了一个难以置信的增长周期,全世界的消费者手里有超过7.5亿台设备,并且每天都有一百多万台设备被激活.和Apple一样,在每一台Android手机和平板上也有个集中的市场,称为Google Play.随着这个市场被安装到每台Android设备上,对任何一个梦想着发布自己的游戏或者壁纸的人来说,这都是个前所未有的机会. 在Android上,与Apple的iOS及许多其他移动平台一样,开发者可以使用一个跨平台应用编程接口创建二维或者三维图形,这个接口称为OpenGL:Op

《OpenGL ES应用开发实践指南:Android卷》—— 3.2 编译着色器

3.2 编译着色器 现在我们已经把着色器源代码从文件中读出来了,下一步就是编译每个着色器了.我们要创建一个新的辅助类,它可以创建新的OpenGL着色器对象.编译着色器代码并且返回代表那段着色器代码的着色器对象.一旦写出样板代码,在未来的项目中就可以重用了. 作为开始,创建一个名为ShaderHelper的新类,并在类中添加如下代码: 这些代码会作为着色器辅助类的基础.与以前一样,不要忘了把导入加进代码中:如果你在使用静态导入时碰到什么问题,请参考1.5节:在本书的剩余部分,我们会一直遵循这个样式

《OpenGL ES应用开发实践指南:Android卷》—— 3.1 加载着色器

3.1 加载着色器 我们既然已经为着色器写了代码,下一步就要把它们加载到内存中:为此,我们首先需要写一个可以从资源文件夹读取那些代码的方法. 3.1.1 从资源中加载文本 在项目中创建一个新的Java源代码包,命名为"com.airhockey.android.util",在这个包中创建一个名为"TextResourceReader"的新类.在类中加入如下代码: 我们已经定义了一个方法从资源中读取文本,该方法就是readTextFileFromResource().

《MonoTouch开发实践指南》一1.2 创建MonoTouch应用程序

1.2 创建MonoTouch应用程序 在本节中,将编写一个带有标签和按钮的简单应用程序,并通过单击按钮来改变标签的文本显示.完成后的应用程序将如图1-10所示. 1.2.1 创建用户界面 首先要做的是创建用户界面.返回刚才在MonoDevelop创建的包含一个空白窗口的应用程序,如果IB还没打开,双击MainWindow.xib文件打开IB.前面提及过,IB是苹果的用户界面设计工具,可以用它来创建应用程序的界面.如果曾经进行过Windows或ASP.NET开发,就会觉得它的作用有点类似于Vis

《MonoTouch开发实践指南》一2.2 通过示例将Object-C与MonoTouch进行对比

2.2 通过示例将Object-C与MonoTouch进行对比 下面通过示例来说明上面讲到的一些概念.前面提到的UIActionSheet将会在示例中使用.通过Objective-C与C#的对比,将有助于清楚地了解如何使用MonoTouch开发应用程序. 注意 通常,使用MonoTouch开发应用程序不需要Xcode或Objective-C,这里这样做的目的是作为基础知识辅助说明MonoTouch的设计.如果有兴趣想了解更多的相关技术,推荐阅读Stephen G. Kochan写的<Progra

《MonoTouch开发实践指南》一1.3 在设备上进行开发

1.3 在设备上进行开发 为了在设备上安装和调试应用程序,必须将它配置为开发设备,下面通过一个过程来讲述如何将设备配置为开发设备. 注册前的准备 在开发过程中将应用程序部署到设备上,需要注册一个iOS开发者的付费账号,之后,需要获得一个开发证书并创建一个开发配置文件(development provisioning profile).配置主要有两个部分,一是注册设备让它可以运行开发环境下生成的应用程序:二是在Mac上创建一个开发证书对应用程序进行签名. 注意 要完成这几个相关步骤,就像跳舞一样,

《MonoTouch开发实践指南》一第3章-3.0 视图和视图控制器

第3章-3.0 视图和视图控制器 3.1 构建MonoTouch MVC应用程序 3.2 在IB中使用视图和控制器 3.3 为视图控制器及其视图添加功能 3.4 使用多个视图和控制器 3.5 实现自定义UIView 3.6 小结 MonoTouch和CocoaTouch的基础是基于一些基本类和模式建立起来的.本章将讲述如何在MonoTouch中根据这些模式使用基块类来构建应用程序,这些基块类是UIKit.UIView和UIViewController的一部分.

《MonoTouch开发实践指南》一3.3 为视图控制器及其视图添加功能

3.3 为视图控制器及其视图添加功能 为了更好地理解视图控制器及其视图是如何工作的,下面将示例做得更有趣点儿.iOS设备有一个加速度计,可以通过测量重力来跟踪原点位于屏幕中心的坐标系中的x(右).y(上).z(屏幕外)方向.如图3-10所示,在SampleViewController中添加代码用来记录设备移动时的加速度数据.使用加速度计也将演示在iOS中另一个关键模式:委托.接下来的代码,可以简单地通过修改当前项目代码实现,不过在本书的示例代码中,该代码是作为单独的工程LMT3-2实现的. 注意

ARKit &amp; OpenGL ES - ARKit 原理及实现

原理篇 如果你想了解更多关于OpenGL ES的知识,请移步至 OpenGL ES相关文章目录 本文所用的代码在https://github.com/SquarePants1991/OpenGLESLearn.git的ARKit分支中. iOS11推出了新框架ARKit,通过ARKit和SceneKit可以很方便的制作AR App.苹果也提供了AR基本的应用框架,你可以直接从此开始你的AR App的开发. 不过本系列文章将使用OpenGL ES为ARKit提供渲染支持,接下来我们先去了解一下AR