Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

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

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

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

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

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

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

procedure ColorToGL(c: TColor; var R, G, B: GLFloat);
begin
  R := (c mod $100) / 255;
  G := ((c div $100) mod $100) / 255;
  B := (c div $10000) / 255;
end;

Here's the translation of the Delphi code snippet into Russian:

Процедура ColorToGL конвертирует значение типа TColor из Delphi в цвет OpenGL, представленный тремя вещественными значениями: красный (R), зеленый (G) и синий (B).

Разбивка кода:

  1. R := (c mod $100) / 255;
    • Выражение (c mod $100) извлекает наименьший значащий байт (LSB) значения типа TColor, представляющий синий компонент.
    • Результат делится на 255, чтобы масштабировать его из байта (0-255) в вещественное значение между 0.0 и 1.0.
  2. G := ((c div $100) mod $100) / 255;
    • Выражение (c div $100) выполняет целочисленное деление, эффективно сдвигая биты значения типа TColor вправо на 8 позиций (т.е., дели на 256).
    • Это извлекает средний байт, представляющий зеленый компонент.
    • Результат затем берется модуль 256, чтобы извлечь наименьший значащий байт (LSB), который делится на 255, как в шаге 1.
  3. B := (c div $10000) / 255;
    • Аналогично шагу 2, но выражение (c div $10000) сдвигает биты вправо на 16 позиций (т.е., дели на 65536).
    • Это извлекает наибольший значащий байт, представляющий красный компонент.
    • Результат делится на 255, как в шагах 1 и 2.

Результаты R, G и B - вещественные числа между 0.0 и 1.0, которые можно использовать для установки цвета OpenGL.

Альтернативное решение могло бы быть использованием встроенных свойств Delphi TColor для извлечения отдельных компонентов цвета (например, Red, Green и Blue) и масштабирования их, как нужно для OpenGL. Например:

procedure ColorToGL(c: TColor; var R, G, B: GLFloat);
begin
  R := c.Red / 255;
  G := c.Green / 255;
  B := c.Blue / 255;
end;

Эта APPROACH более читаемая и поддерживаемая, но может быть менее эффективной из-за дополнительных вызовов функций.

Процедура ColorToGL для перевода цвета из TColor в OpenGL, которая разбивает цвет на компоненты R, G и B.


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

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




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


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


реклама


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

Время компиляции файла: 2024-08-19 13:29:56
2024-11-21 14:23:12/0.0055649280548096/1