我正在为位于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的颜色。
答案 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即可获得所需的颜色。