Реализация «режимов рисования» в графической библиотеке? - PullRequest
0 голосов
/ 18 марта 2010

Я хотел бы реализовать «режимы рисования» (в моей собственной графической библиотеке).

То есть рисование с И, ИЛИ и т. Д. Однако я храню цвета, используя плавающие, каждый канал от 0 до 1,0 Нужно ли сначала преобразовывать каждый цветовой канал в 0-255, прежде чем я смогу использовать режимы рисования AND, OR и т. Д.? а затем преобразовать обратно в число с плавающей точкой (0,0-1,0)?

Или есть другой способ сделать это?

спасибо

1 Ответ

2 голосов
/ 18 марта 2010

Я считаю, что вопрос недостаточно ясен. AND, OR и т. Д. Являются логическими операторами. Многие языки также поддерживают побитовые версии. Итак, сначала вам нужно определить, что именно означает И-во или ИЛИ-два значения цвета. Что такое красный и зеленый? Это черный?

Если ответ на поставленный выше вопрос положительный, то вы, вероятно, захотите применить эти операторы в побитовом смысле к (целочисленному) RGB-представлению ваших цветов. В этом случае вам необходимо: 1. Преобразовать числа с плавающей точкой в ​​(8-битное или другое разрешение) целые числа 2. Упакуйте 3 канала (или 4 с альфа-каналом) в одно слово (вероятно, 32-разрядное целое число) 3. Примените побитовый оператор 4. Распакуйте каналы и конвертируйте обратно в число с плавающей запятой.

Обратите внимание, что при преобразовании чисел с плавающей точкой вам нужно сначала умножить значение с плавающей запятой на MAX_COLOR (255 в вашем примере), а затем привести к приведению. В противном случае вы получите все каналы равными 0. Напротив, при обратном преобразовании в числа с плавающей запятой сначала приведите, а затем разделите на MAX_COLOR, чтобы нормализовать ваши значения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...