2014-11-19 4 views
0

Я делаю учебник по OpenGL ES для Android находится hereOpenGL ES 2.0 для Android - Triangle определение цвета

Мой вопрос о цветах треугольников. Возьмите этот треугольник, например:

// 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 toal not 1.0.

ответ

1

Цвета в OpenGL масштабируются в диапазоне от 0 до 1 (с плавающей запятой). Для преобразования 8-битных значений цвета (0 -255 целых) просто разделите значение на 255, и вы получите нужный цвет.

1

Это то, как цвета определены в OpenGL при указании их с поплавковыми значениями. Диапазон каждого компонента составляет от 0,0 до 1,0.

Использование диапазона от 0 до 255 имеет смысл при использовании значений байтов, поскольку это диапазон, доступный для 8-битного числа без знака.

Поскольку поплавки не покрывают фиксированный диапазон (*), диапазон, используемый для определения цветов, является несколько произвольным. Использование от 0.0 до 1.0 делает примерно такое же чувство, как и все. Вы можете посмотреть на значения компонентов как фракции. Например, 0.0 для красного означает «нет красного цвета», а 1.0 означает «все доступные красные». Использование фракций для выражения значений, которые идут от «none» до «all», очень распространено, а значения от 0.0 до 1.0 представляют собой представление с плавающей запятой этих фракций.

(*) Очевидно, что существует ряд значений, которые могут быть представлены поплавками, но использование полного диапазона в этом контексте не имеет смысла.

Смежные вопросы