OSDev http://osdev.su/ |
|
Графические режимы http://osdev.su/viewtopic.php?f=6&t=662 |
Страница 1 из 2 |
Автор: | IlyaChur [ 10 дек 2012, 20:38 ] |
Заголовок сообщения: | Графические режимы |
Очень прошу сразу не кидаться камнями, понимаю, что про это уже много где писалось, но все же... Я хотел бы спросить в чем разница в выводе символов на экран в режимах 0xa0000 и 0xb8000. Раньше я выводил все напрямую в текстовый видеобуфер 0xb8000, теперь хочу начать начать использовать VESA, а для этого, насколько я понял, нужен графический режим, то есть для начала надо настраивать видеобуфер на адрес 0xa0000. Так вот, после того как я пытаюсь настроить видео буфер на адрес 0xa0000 и вывести сообщение на экран - ничего не происходит, текст не появляется, но при этом специальные символы (\t\n) работают. Отсюда собственно и вопрос, в чем отличие вывода текста в данных режимах? Прошу сильно не бить |
Автор: | SII [ 10 дек 2012, 20:42 ] |
Заголовок сообщения: | Re: Графические режимы |
Это не режимы, а базовые адреса видеопамяти для древних видеорежимов. A0000 -- адрес для цветных графических режимов, начиная с CGA, B8000 -- адрес для текстовых режимов. По какому адресу располагалась память для чёрно-белых графических режимов типа Hercules'а, я не помню. А разница элементарна: если включен именно графический режим, то буковки надо рисовать по пикселям, записывая соответствующие значения в нужные ячейки видеопамяти, а если в текстовом режиме, то в видеопамять пишутся по два байта на символ: его код и следом за ним -- атрибут, задающий цвет и мерцание/яркость. |
Автор: | IlyaChur [ 10 дек 2012, 20:48 ] |
Заголовок сообщения: | Re: Графические режимы |
Так, то есть для начала мне надо сделать маску для вывода этих символов, а потом тогда печатать символы по этой маски? И можно тогда еще один глупый вопрос, как задать цвет символа в графическом режиме, если я вывожу его попиксельно? |
Автор: | phantom-84 [ 10 дек 2012, 21:16 ] |
Заголовок сообщения: | Re: Графические режимы |
IlyaChur писал(а): Так, то есть для начала мне надо сделать маску для вывода этих символов, а потом тогда печатать символы по этой маски? Это называется битовой картой символов/шрифта.Цитата: И можно тогда еще один глупый вопрос, как задать цвет символа в графическом режиме, если я вывожу его попиксельно? Символы состоят из точек, цвет точки определяет ее двоичный код, глубина цветового кодирования (т.е. количество бит на одну точку) определяется текущим видеорежимом.Кстати я использую адрес 0xA0000 в текстовом режиме. Это позволяет нормально использовать все окно размером в 128 Кб, т.е. весь диапазон "знакомест" от 0 до 0xFFFF. |
Автор: | IlyaChur [ 10 дек 2012, 21:27 ] |
Заголовок сообщения: | Re: Графические режимы |
Цитата: Кстати я использую адрес 0xA0000 в текстовом режиме. Но при этом вы все-равно пользуетесь битовой картой символов? А размерность символов в этой карте зависит от видеорежима? |
Автор: | phantom-84 [ 10 дек 2012, 21:46 ] |
Заголовок сообщения: | Re: Графические режимы |
IlyaChur писал(а): Но при этом вы все-равно пользуетесь битовой картой символов? Я использую свою битовую карту прежде всего из-за того, что мне нужна кириллица. В текстовом режиме шрифт может быть однократно загружен в знакогенератор, а потом для вывода отдельного символа достаточно выводить только его код и атрибуты (2 байта).Цитата: А размерность символов в этой карте зависит от видеорежима? Размерность "знакомест" на экране зависит от параметров видеорежима. Я использую видеорежимы с размерностью знакоместа 9x16, при этом фактическая битовая карта символа имеет размерность 8x16, однако в видеопамяти, где хранится шрифт, его карта всегда занимает 8x32 бит.
|
Автор: | IlyaChur [ 10 дек 2012, 21:54 ] |
Заголовок сообщения: | Re: Графические режимы |
phantom-84 писал(а): Я использую свою битовую карту. Вы ее сами вручную составляли? Или программу конвертирующую шрифт в битовую маску писали? |
Автор: | phantom-84 [ 10 дек 2012, 22:27 ] |
Заголовок сообщения: | Re: Графические режимы |
Куда вставлял? В исходник? У меня нет такой необходимости, т.я. у меня ядро написано на fasm'е. Вставляю непосредственно бинарник со шрифтом. Если тебе нужно конвертировать бинарник в исходник, поищи по форуму. Не так давно была тема про конвертирование бинарника в массив констант для Си. Еще раньше была тема, касающаяся конвертирования бинарника в ассемблерный исходник. |
Автор: | IlyaChur [ 10 дек 2012, 22:30 ] |
Заголовок сообщения: | Re: Графические режимы |
Да я про исходник имел в виду... phantom-84 писал(а): Не так давно была тема про конвертирование бинарника в массив констант для Си. Да, это как раз то что нужно, спасибо большое, посмотрю! |
Автор: | Yoda [ 10 дек 2012, 22:48 ] |
Заголовок сообщения: | Re: Графические режимы |
Утилита здесь: viewtopic.php?p=7607#p7607 |
Страница 1 из 2 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |