Формат пикселей поверхности
#include <gf/gf.h>typedef enum {GF_FORMAT_INVALID = 0,GF_FORMAT_BYTE,GF_FORMAT_PAL8,GF_FORMAT_PACK_ARGB1555,GF_FORMAT_PKLE_ARGB1555,GF_FORMAT_PKBE_ARGB1555,GF_FORMAT_PACK_RGB565,GF_FORMAT_PKLE_RGB565,GF_FORMAT_PKBE_RGB565,GF_FORMAT_BGR888,GF_FORMAT_BGRA8888,GF_FORMAT_ARGB8888,GF_FORMAT_ABGR8888,GF_FORMAT_RGBA8888,GF_FORMAT_PACK_YUV_UYVY,GF_FORMAT_PKLE_YUV_UYVY,GF_FORMAT_PKBE_YUV_UYVY,GF_FORMAT_PACK_YUV_YUY2,GF_FORMAT_PKLE_YUV_YUY2,GF_FORMAT_PKBE_YUV_YUY2,GF_FORMAT_PACK_YUV_YVYU,GF_FORMAT_PKLE_YUV_YVYU,GF_FORMAT_PKBE_YUV_YVYU,GF_FORMAT_PACK_YUV_V422,GF_FORMAT_PKLE_YUV_V422,GF_FORMAT_PKBE_YUV_V422,GF_FORMAT_PACK_YUV_NV12,GF_FORMAT_PACK_YUV_AYUV,GF_FORMAT_PLANAR_YUV_YVU9,GF_FORMAT_PLANAR_YUV_YV12,GF_FORMAT_PLANAR_YUV_420,/* interlaced formats */GF_FORMAT_PACK_YUV_UYVY_INTERLACED,GF_FORMAT_PKLE_YUV_UYVY_INTERLACED,GF_FORMAT_PKBE_YUV_UYVY_INTERLACED,GF_FORMAT_PACK_YUV_YUY2_INTERLACED,GF_FORMAT_PKLE_YUV_YUY2_INTERLACED,GF_FORMAT_PKBE_YUV_YUY2_INTERLACED,GF_FORMAT_PACK_YUV_YVYU_INTERLACED,GF_FORMAT_PKLE_YUV_YVYU_INTERLACED,GF_FORMAT_PKBE_YUV_YVYU_INTERLACED,GF_FORMAT_PACK_YUV_V422_INTERLACED,GF_FORMAT_PKLE_YUV_V422_INTERLACED,GF_FORMAT_PKBE_YUV_V422_INTERLACED,GF_FORMAT_PACK_YUV_NV12_INTERLACED,GF_FORMAT_PACK_YUV_AYUV_INTERLACED,GF_FORMAT_PLANAR_YUV_YVU9_INTERLACED,GF_FORMAT_PLANAR_YUV_YV12_INTERLACED,GF_FORMAT_PLANAR_YUV_420_INTERLACED,} gf_format_t;
Перечисление gf_format_t
характеризует форматы отображаемой информации и соответствующие им форматы пикселей поверхности. Допустимы следующие значения:
8bpp
(от англ. "bits per pixel" или бит на пиксель). 8bpp
, индексированный палитровый формат с 256
цветами. 16bpp
упакованные ARGB форматы: биты 0-4
определяют синий цвет, 5-9
— зеленый, 10-14
— красный, старшие биты — альфа канал. 16bpp
упакованные RGB форматы: биты 0-4
определяют синий цвет, 5-10
— зеленый, 11-15
— красный. 24bpp
BGR формат с 8
битами на канал цвета. 32bpp
BGRA формат с 8
битами на канал цвета. 16-битовый
упакованные YUV форматы (FourCC код UYVY
). 16-битовый
упакованные YUV форматы (FourCC код YUY2
). 16-битовый
упакованные YUV форматы (FourCC код YVYU
). 16-битовый
упакованные YUV форматы (FourCC код V422
). YVU9
). YV12
). Отдельные форматы со временем утрачивают актуальность. Так, Photon
не поддерживает палитровый формат GF_FORMAT_PAL8
.
Для всех упакованных форматов имеется четыре разновидности:
Там, где это возможно, рекомендуется использовать PACK и позволить драйверу выделять поверхности тем способом, который близок к потребностям оборудования. Это повысит потенциальную портируемость приложения. Данную логику принятия решений в общем случае реализуют функции gf_surface_create() и gf_surface_create_layer().
При использовании функции gf_surface_attach() следует указывать конкретный порядок байт, используя PKLE, PKBE или PKHE.
Графическая подсистема ЗОСРВ «Нейтрино», Graphics Framework
gf_surface_create(), gf_surface_create_layer(), gf_surface_attach()
Предыдущий раздел: GF API