OSDev
http://osdev.su/

VESA и альфа канал
http://osdev.su/viewtopic.php?f=6&t=575
Страница 1 из 1

Автор:  scuter [ 02 июн 2012, 23:21 ]
Заголовок сообщения:  VESA и альфа канал

скажите можно ли запустить альфа канал в визе и как это сделать,
просто на много проще вписывать по 4 вайта чем 3

п.с.(альфа канал это прозрачность)

Автор:  grindars [ 02 июн 2012, 23:37 ]
Заголовок сообщения:  Re: VESA и альфа канал

Альфа-канала нет, но 32-битные режимы есть - "лишний" байт никак в них не используется.

Как именно распределены цвета в пикселе можно узнать, вызвав функции получения информации о режиме VBE.

Автор:  scuter [ 03 июн 2012, 00:45 ]
Заголовок сообщения:  Re: VESA и альфа канал

мне эти режимы и нужны,
везде пишут 24-битные и 32-битные режимы
а какой из них 32 и какой 24 не пишут,
мне то оно надо не для прозрачноси.

Автор:  grindars [ 03 июн 2012, 09:21 ]
Заголовок сообщения:  Re: VESA и альфа канал

Пойдем сложным путем (опять). Спецификация на VBE3.

Сначала вы вызываете функцию 4F00h VBE и получаете в ответ структуру, где помимо информации о самом адаптере есть список номеров режимов - двухбайтовых целых. Затем для каждого режима из этого списка вызываете функцию 4F01 и получаете в ответ блок информации о режиме. Полей там достаточно много, но нас сейчас интересует несколько.

В поле ModeAttributes указаны атрибуты режима. Дальше я буду описывать работу только с режимами, у которых там установлены биты 0, 3, 4, 7. Поле memorymodel указывает организацию памяти режима, вам нужны только direct color режимы (значение 6).

Следующие поля - XResolution, YResolution, BitsPerPixel и целая группа масок и смещений для красного, зеленого, синего цветов и зарезервированной части. Они описывают, как именно используется каждый бит пикселя. А нужны они, например, из-за того, что есть два 16-битных режима: 5:6:5:0 и 5:5:5:1, и иначе их не различить.

Автор:  Станислав [ 03 июн 2012, 10:06 ]
Заголовок сообщения:  Re: VESA и альфа канал

scuter писал(а):
скажите можно ли запустить альфа канал в визе и как это сделать,
просто на много проще вписывать по 4 вайта чем 3

п.с.(альфа канал это прозрачность)


альфа канал это 4 байт пикселя, его можно использовать для создания прямой ссылки на объект чей этот пиксетль, или прозрачности. Что собственно я и делаю.
Он естественно есть, если пиксель 32битный. Для весы у меня такой код.

mov dword[VESAInfo_Signature],'VBE2'
mov ax, 4F00h
mov di, VESA_Info
int 10h

lds si,[VESAInfo_VideoModePtr]
jmp .1
@@: add si,2

mov ax,4F01h ;узнаем LFB режима
mov di,Mode_Info
int 10h

cmp [ModeInfo_Width],1024;800;640
jnz .1
cmp [ModeInfo_Height],768;600;480
jnz .1
cmp [ModeInfo_Depth],32
jz @f

.1: mov cx,[si]
cmp cx,0FFFFh
jne @b
@@:

mov ax,4F02h ;установим режим
mov bx,cx
int 10h

Автор:  phantom-84 [ 03 июн 2012, 10:25 ]
Заголовок сообщения:  Re: VESA и альфа канал

Угу, а если нужного режима нет, устанавливаем режим 0FFFFh :|

Автор:  pavia [ 03 июн 2012, 12:36 ]
Заголовок сообщения:  Re: VESA и альфа канал

На моей интеловской карточке нет 32битных режимов только 24битные. И не все они с LFB некоторые только через окна работают

Автор:  Станислав [ 03 июн 2012, 13:03 ]
Заголовок сообщения:  Re: VESA и альфа канал

Вообще есть мнение, что интеловские работают сейчас только с 32битным, вообще все операции с альфа коналом происходят в буфере, а в самой видео памяти, которая выводится на экран постоянно нет конечно.

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/