Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения
KANSoftWare

Перевод цвета из TColor в OpenGL 2

Delphi , Графика и Игры , Цвета и Палитра

Перевод цвета из TColor в OpenGL 2

Автор: Gua
WEB-сайт: http://delphibase.endimus.com

{ **** UBPFD *********** by delphibase.endimus.com ****
>> Перевод цвета из TColor в OpenGL (2)

Зависимости: нет
Автор:       Gua, fbsdd@ukr.net, ICQ:141585495, Simferopol
Copyright:
Дата:        05 мая 2002 г.
***************************************************** }

procedure ColorToGL(c: TColor; var R, G, B: GLFloat);
begin
  R := (c and $FF) / 255;
  G := ((c and $FF00) shr 8) / 255;
  B := ((c and $FF0000) shr 16) / 255;
end;

Here's the translation of the text into Russian:

Анализ кода Процедура ColorToGL, написанная на Delphi, конвертирует значение типа TColor в значения цветов OpenGL (красный, зеленый, синий). Вот разбивка кода:

  1. Процедура принимает три параметра:
    • c: Значение типа TColor, представляющее собой цвет.
    • R, G и B: Три переменные типа GLFloat, которые будут хранить результаты красного, зеленого и синего компонентов.
  2. Процедура использует битовые операции для извлечения красного, зеленого и синего компонентов из значения TColor:
    • (c and $FF) извлекает низкую байт (красный компонент) путем выполнения битового оператора AND с hexadecimal константой $FF.
    • ((c and $FF00) shr 8) извлекает среднюю байт (зеленый компонент) путем выполнения битового оператора AND с hexadecimal константой $FF00, смещения результата вправо на 8 бит и деления результата на 255.
    • ((c and $FF0000) shr 16) извлекает высокую байт (синий компонент) путем выполнения битового оператора AND с hexadecimal константой $FF0000, смещения результата вправо на 16 бит и деления результата на 255.
  3. Процедура присваивает извлеченные значения переменным R, G и B.

Альтернативное решение Хотя данный код работает корректно, вы можете упростить его с помощью встроенных функций конвертации цветов Delphi:

procedure ColorToGL(c: TColor; var R, G, B: GLFloat);
begin
  R := (c shr 16) / 255;
  G := (c shr 8) and $FF00 / 255;
  B := c and $FF / 255;
end;

В этом альтернативном решении мы используем битовые операции сдвига (shr) для извлечения красного, зеленого и синего компонентов из значения TColor. Оператор and используется для маскирования неожиданных битов.

Примечание: В обоих решениях деление на 255 необходимо потому, что тип TColor Delphi использует диапазон 0..16777215 для своих значений цветов, в то время как OpenGL ожидает вещественные значения в диапазоне 0..1.

Описание статьи: В статье описывается процедура ColorToGL, которая переводит цвет из TColor в OpenGL 2, используя для этого битовые операции и деление на 255.


Комментарии и вопросы


Ваше мнение или вопрос к статье в виде простого текста (Tag <a href=... Disabled). Все комментарии модерируются, модератор оставляет за собой право удалить непонравившейся ему комментарий.

заголовок

e-mail

Ваше имя

Сообщение

Введите код




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



:: Главная :: Цвета и Палитра ::


реклама



©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru Rambler's Top100

Время компиляции файла: 2024-05-10 07:13:18
2024-05-19 15:14:42/0.006378173828125/0