OpenGL ES 2.0 Android - 三角形颜色定义

时间:2014-11-19 03:02:57

标签: opengl-es-2.0 rgb

我正在为位于here

的OpenGL ES for Android做一个教程

我的问题是关于三角形的颜色。以三角形为例:

// This triangle is red, green, and blue.
final float[] triangle1VerticesData = {
    // X, Y, Z, 
    // R, G, B, A
    -0.5f, -0.25f, 0.0f, 
    *1.0f,* 0.0f, 0.0f, 1.0f,

    0.5f, -0.25f, 0.0f,
    0.0f, 0.0f, 1.0f, 1.0f,

    0.0f, 0.559016994f, 0.0f, 
    0.0f, 1.0f, 0.0f, 1.0f};

在第一个顶点为什么红色定义为1.0f?我以为它会是255.为什么总共1.0f? 如果我去这个http://html-color-codes.info/这样的网站获得我希望它显示在255而不是1.0的颜色。

2 个答案:

答案 0 :(得分:1)

这是在使用浮点值指定颜色时在OpenGL中定义颜色的方式。每个组分的范围是0.0到1.0。

使用字节值时,使用0到255的范围是有意义的,因为这是无符号8位数的可用范围。

由于浮点数不覆盖固定范围(*),因此用于定义颜色的范围有些随意。使用0.0到1.0会产生与任何事物一样多的意义。您可以将组件值视为分数。例如,0.0表示红色表示“无红色”,1.0表示“全部可用红色”。使用分数表示从“无”到“全部”的值非常常见,而从0.0到1.0的值是这些分数的浮点表示。

(*)显然有一系列可以用浮点数表示的值,但在这种情况下使用全范围是没有意义的。

答案 1 :(得分:1)

OpenGL中的颜色在0到1(浮点)范围内缩放。要转换8位颜色值(0 -255整数),只需将值除以255即可获得所需的颜色。

相关问题