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/ |