VGA-палитра: различия между версиями

Материал из Old-Games.RU Wiki
Перейти к навигации Перейти к поиску
(Новая страница: «'''VGA-палитра''' - понятие, тесно связанное со стандартом VGA и представлением этим стандар…»)
 
Строка 1: Строка 1:
 +
[[Файл:VGA Palette - Big.PNG|thumb|Стандартная палитра VGA для [[DOS]]]]
 +
 
'''VGA-палитра''' - понятие, тесно связанное со стандартом [[VGA]] и представлением этим стандартом отображаемых цветов. Из спецификации VGA следует, что поддерживающие его устройства могут отображать до 256 индексированных цветов из доступных 2<sup>18</sup> = 262 144 цветов. Почему 2<sup>18</sup>? Дело в том, что для глубины цвета RGB в VGA стандартом отводится 6 бит. Так как каналов цвета у нас три (красный, зелёный, синий), то для определения полного цвета нам нужно 18 бит. Но так как во времена разработки стандарта понятия "видеопамять" не существовало (кадровый буфер размещался в ОЗУ), то эту самую память следовало экономить. Поэтому в VGA используется понятие ''палитра'', которое позволяет снизить потребление памяти на 125 % по сравнению с "чистым" 18-битным представлением.
 
'''VGA-палитра''' - понятие, тесно связанное со стандартом [[VGA]] и представлением этим стандартом отображаемых цветов. Из спецификации VGA следует, что поддерживающие его устройства могут отображать до 256 индексированных цветов из доступных 2<sup>18</sup> = 262 144 цветов. Почему 2<sup>18</sup>? Дело в том, что для глубины цвета RGB в VGA стандартом отводится 6 бит. Так как каналов цвета у нас три (красный, зелёный, синий), то для определения полного цвета нам нужно 18 бит. Но так как во времена разработки стандарта понятия "видеопамять" не существовало (кадровый буфер размещался в ОЗУ), то эту самую память следовало экономить. Поэтому в VGA используется понятие ''палитра'', которое позволяет снизить потребление памяти на 125 % по сравнению с "чистым" 18-битным представлением.
  

Версия 10:33, 19 марта 2014

Стандартная палитра VGA для DOS

VGA-палитра - понятие, тесно связанное со стандартом VGA и представлением этим стандартом отображаемых цветов. Из спецификации VGA следует, что поддерживающие его устройства могут отображать до 256 индексированных цветов из доступных 218 = 262 144 цветов. Почему 218? Дело в том, что для глубины цвета RGB в VGA стандартом отводится 6 бит. Так как каналов цвета у нас три (красный, зелёный, синий), то для определения полного цвета нам нужно 18 бит. Но так как во времена разработки стандарта понятия "видеопамять" не существовало (кадровый буфер размещался в ОЗУ), то эту самую память следовало экономить. Поэтому в VGA используется понятие палитра, которое позволяет снизить потребление памяти на 125 % по сравнению с "чистым" 18-битным представлением.

Поскольку игры могут отображать только 256 цветов, палитра может не хранится в самих растровых изображениях, а где-то отдельно. Классические VGA-палитры имеют фиксированный размер в 768 байт (3 байта на RGB * 256), так что если после распаковки ресурса вы найдете файлы с таким размером, то на 80 % это - VGA-палитры. Обычно первый цвет в палитре - черный, так что первое значение обычно будет 00 00 00 (тоже неплохой способ детектировать палитры). Некоторые графические форматы файлов содержат уже в себе используемую палитру, например, в PCX-файлах она может находиться в последних 768 байтах.

Палитра хранится в трехбайтной упаковке по шесть бит на цветовой канал (значения от 0 до 63), иначе говоря, глубина цвета такой палитры - 18 бит. Чтобы представить ее в современной 24-битной глубине (по восемь бит на цветовой канал), нужно провести несложные вычисления с каждым цветовым каналом по следующей формуле:

цветовой_канал_8_бит = (цветовой_канал_6_бит << 2) | (цветовой_канал_6_бит >> 4)

Обратное преобразование следующее:

цветовой_канал_6_бит = цветовой_канал_8_бит >> 2