Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.06.2012, 16:17   #1
EnterFix
Пользователь
 
Регистрация: 10.06.2012
Сообщений: 22
Вопрос Проблема с видеостраницами. VGA, VGAHi

Для решения проблемы решил использовать видеостраницы.
Но при переключении ( SetViualPage(1); ) отображается половина второй страницы, половина первой. В инете прочитал, что мод VGAHi имеет только одну видеостраницу. Т.е. использование видеостраниц в этом моде не возможно?

Может я что-то не так делаю. Вот часть кода:
Код:
SetActivePage(1);
clearDevice;
putimage(5,8,Lvlp1^,0);
putimage(318,8,Lvlp2^,0);
SetActivePage(0);
clearDevice;
SetColor(10);
Rectangle(5,8,635,400);
SetColor(0);
line(5,219,5,231);
Фактически мне нужно на страницу 1 поместить изображение. Далее, при движении персонажа на стр 0, будет считываться информация со страницы 1. Если на стр 1 есть преграда, то она рисуется на стр 0.
Но страницы отображаются не верно (причём и 1 и 0).
EnterFix вне форума Ответить с цитированием
Старый 16.06.2012, 19:19   #2
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Цитата:
Сообщение от EnterFix Посмотреть сообщение
В инете прочитал, что мод VGAHi имеет только одну видеостраницу. Т.е. использование видеостраниц в этом моде не возможно?
Да, это так.
VGA имел 256 Кбайт видеопамяти.
В режиме 640х480 при 16 цветах используется 640*480*4=1228800 бит или 153600 байт. Очевидно, в 262144 байта две такие страницы не помещаются.

Если непременно нужны 2 видеостраницы, используйте либо 640х350 при 16 цветах или 640х480 с меньшим количеством цветов (2 или 4).

Но, по-хорошему, подобный режим - тупиковая ветвь развития видеосистем, и о нем уже давно пора забыть.

Да, а для динамичной графики 16-цветные режимы вообще категорически не подходят - очень медленные, т.к. при записи пикселей в видеопамять приходится регулярно переключать битовые плоскости через регистры.

Последний раз редактировалось s-andriano; 16.06.2012 в 19:21.
s-andriano вне форума Ответить с цитированием
Старый 16.06.2012, 20:09   #3
EnterFix
Пользователь
 
Регистрация: 10.06.2012
Сообщений: 22
По умолчанию

Печально(
Придётся думать как обойтись без видеостраниц, т.к. 640Х480 необходимо.
Спасибо за ответ
EnterFix вне форума Ответить с цитированием
Старый 16.06.2012, 20:24   #4
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

И обязательно 16 цветов?
s-andriano вне форума Ответить с цитированием
Старый 16.06.2012, 22:41   #5
EnterFix
Пользователь
 
Регистрация: 10.06.2012
Сообщений: 22
По умолчанию

Цитата:
Сообщение от s-andriano Посмотреть сообщение
И обязательно 16 цветов?
Т.е. если 640х480х4, то SetColor(10); (Светло зелёный (или какой-либо другой) ) не отобразится?

Просто всегда использовал 640х480х16. И не много знаю о различиях режимов.
EnterFix вне форума Ответить с цитированием
Старый 16.06.2012, 22:55   #6
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

4 цвета, если мне не изменяет память, бывают только в двух палитрах:
1. Голубой, малиновый, черный, белый.
2. Зеленый, красный, желтый (какой-то еще).
Setcolor, естественно, от 0 до 3.

Кроме того, есть режимы с 256 цветами, а также Hi- и TrueColor, где каждая компонента цвета кодируется непосредственно в пикселе.
Есть, правда, некоторая проблема в том, что Майкрософт постепенно сворачивает поддержку DOS, и первыми "пали" как раз режимы, обеспечивающие максимальное качество изображения (наверное, чтобы пользователи побыстрее забывали DOS).
В общем, в DOS все это работать будет, а в DOS-сессии Windows - под сомнением.

Но от 16-цветных режимов в любом случае нужно уходить. Они уже канули в Лету и не следует пытаться их реанимировать.
s-andriano вне форума Ответить с цитированием
Старый 17.06.2012, 00:49   #7
EnterFix
Пользователь
 
Регистрация: 10.06.2012
Сообщений: 22
По умолчанию

Есть режим 640Х480Х256 ?
Это какой и как его выбрать?
Т.е. в параметре процедуры SetColor может быть число от 0 до 255?

Да. То, что Майкрософт сворачивают поддержку ДОС видно.
EnterFix вне форума Ответить с цитированием
Старый 17.06.2012, 09:48   #8
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

1. Есть.

2. Согласно действующему стандарту VBE 2.0 за режимами НЕ закрепляется индивидуальных номеров. Чтобы узнать номер режима следует запросить у видеокарты количество поддерживаемых режимов, запросить информацию о каждом из режимов и выбрать подходящий. Но обычно производители придерживаются номеров, рекомендованных предыдущей версией стандарта VESA 1.4.

3. Что такое процедура SetColor? Откуда она берется?
s-andriano вне форума Ответить с цитированием
Старый 17.06.2012, 12:06   #9
EnterFix
Пользователь
 
Регистрация: 10.06.2012
Сообщений: 22
По умолчанию

SetColor(Color:word); процедура модуля Graph. Устанавливает цвет выводимого в граф. режиме текста, линий, фигур и всего, что рисуется.

Просто не пойму как управлять этими 256 цветами. Так же как и при 16?
EnterFix вне форума Ответить с цитированием
Старый 17.06.2012, 17:11   #10
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Да, в случае, если цветов не более 256, то так же.
Правда, для этого нужен драйвер, который умеет работать с соответствующими экранными режимами. В комплекте Borland Pascal такого нет.
Это, разумеется, при условии, что Вы непременно хотите использовать модуль Graph.

Собственно, я хотел дать Вам некоторую информацию, которая может послужить поводом к размышлению.

1. Графический режим, который Вы пытаетесь использовать, давно устарел, нигде не используется и, более того, оказался тупиковой ветвью развития видеоконтроллеров.
2. Модуль Graph не предназначен для динамичной графики.
3. MS DOS, для которого Вы пытаетесь писать программы, устарел. Хуже того, даже те возможности, которые у него есть (по крайней мере, наиболее интересные из них), не поддерживаются новыми версиями Windows.

Конечно, Вам решать, какими средствами пользоваться. И на первый взгляд кажется, что т.к. Вы что-то умеете, то проще будет немного добавить к этим умениям, чтобы получить результат. Но на проверку может оказаться, что во-первых, это "немного" окажется не так уж мало, а во-вторых, что полученные новые знания все равно окажутся мало полезными, т.к. будут относиться к уже фактически не существующей ОС и средствам, как можно заставить работать программы для этой ОС в другой ОС.

Лично я, когда требуется написать простенькую игрушку, в которой не используется 3D-графика, поступаю так:
1. Создаю простейшее окно Windows (по потребностям либо "с рамкой", либо полноэкранное).
2. Создаю в памяти образ BMP-файла.
3. В этом образе формирую изображение.
4. Вывожу это изображение на экран одной командой.

Это - что касается изображения.
В виде бонуса получаю:
1. Отсутствие необходимости писать свой драйвер клавиатуры для DOS, т.к. имеющийся в DOS драйвер для динамических игр не подходит, а аналогичный в Windows - подходит.
2. Существенно более простой вывод звука в Windows чем в DOS.

PS. Да, в случае 3D-графики преимущества Windows намного более ощутимы.

Последний раз редактировалось s-andriano; 17.06.2012 в 17:13.
s-andriano вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Переходник с VGA на SCART Terran Компьютерное железо 6 22.11.2012 21:36
Подключение телевизора VGA -> RGB в ubuntu 11.04 Bilargo Компьютерное железо 8 03.12.2011 22:17
vga проблема! Gangster050196 Свободное общение 6 05.09.2011 12:37
Провод HDMI или VGA ? Fulit Компьютерное железо 13 16.08.2010 20:20
Стандартный VGA драйвер Basshunter Компьютерное железо 2 06.10.2009 13:04