logo
Литература_1 / photon_old

Видеорежимы

Видеорежим определяет, как выглядит экран (что Вы видите на мониторе). Описание режима включает:

Width

Ширина экрана в пикселях

Heigth

Высота экрана в пикселях

Pixel depth

"Глубина" пикселя – число бит представляющих пиксель. определяет, как много уникальных цветов Вы можете видеть на экране одновременно.

Refresh rate

Частота обновления кадров – число, указывающее, с какой частотой обновляется люминофор на ЭЛТ Вашего монитора (представлен в Hz).

Метод перечисления видеорежимов, применяемый в микроGUI Photon'а, схож со спецификацией VESA, где имеются "номера режимов" – численные представления ширины, высоты и пиксельной глубины видеорежима. Частота регенерации зависит от номера режима (это является отдельным членом в PgDisplaySettings_t). Номера режимов определяет драйвер, так что для одной видеокарты режим 640х480х8 может быть режимом 2, тогда как для другой – режимом 3022. Чтобы определить свойства какого-либо данного номера режима, используйте функцию PgGetVideoModeInfo(). Чтобы получить список номеров режимов, поддерживаемых конкретным графическим драйвером, используйте функцию PgGetVideoModeList().

Функциями для работы с видеорежимами являются:

PdSetTargetDevice()

Установить целевое устройство

PgGetGraphicsHWCaps()

Определить характеристики аппаратного обеспечения

PgGetVideoMode()

Получить текущий видеорежим

PgGetVideoModeInfo()

Получить информацию о видеорежиме

PgGetVideoModeList()

Запросить у графического драйвера список поддерживаемых им видеорежимов

PgSetVideoMode()

Установить текущий видеорежим

Вот некий простой код:

PgVideoModes_t ModeList;

PgVideoModeInfo_t ModeInfo;

PgDisplaySettings_t ModeSetting;

int I = 0, done = 0;

if (PgGetVideoModeList(&ModeList)) {

/* Ошибка – драйвер этого не поддерживает */

}

/* Использовать для этого режима принятую по умолчанию частоту обновления */

ModeSetting.refresh = 0;

while (!done) {

if (PgGetVideoModeInfo(ModeList.modes[i], &ModeInfo)) {

/* Код ошибки */

}

if ((ModeInfo.width = = 640) && (ModeInfo.height = = 480) && (ModeInfo.bits_per_pixel = = 16))

{

/* Мы нашли режим, который искали */

done = 1;

ModeSetting.mode = ModeList.modes[i];

}

i++;

if (i >= ModeList.num_modes) {

/* Ошибка – режим не найден */

done=1;

}

}

PgSetVideoMode (&ModeSetting);

Yandex.RTB R-A-252273-3
Yandex.RTB R-A-252273-4