![]() |
|
Модераторы: volvo877, Snowy, MetalFan |
![]()
|
|
| nighthare |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 37 Регистрация: 24.12.2005 Репутация: нет Всего: нет |
Собственно вопрос такой. Если перерисовывать в паскале путем очистки экрана, то возникает не приятное моргание. Как можно работать с буфером видеокарты, чтобы дальше выводить обновленный экран? можно ли сделать например так, делаем 2-мерный массив, туда заносим нужные точки, потом передаем его видеокарте, она его отрисовывает? Интересует в первую очередь как это правильно реализовать в среде Pascal ( с примерам(и) ) (так же интересно как это сделать на .net, но это немного не в тот раздел
|
|||
|
||||
| remax |
|
|||
|
Доцент ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 686 Регистрация: 7.4.2002 Где: Украина, Харьков Репутация: нет Всего: 5 |
В досе была возможность работы с виртуальными экранами. Один активен - на другом подготавливаем картинку. Затем меняем местами. Однако, из под Win многие досовские возможности режутся. Поэтому, надо определиться - под что писать прогу.
-------------------- Как бы ты не старался быть хорошим и правильным человеком с принципами и уважительным отношением к другим, всегда найдется кто-то, кто бросит в тебя какашку |
|||
|
||||
| nighthare |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 37 Регистрация: 24.12.2005 Репутация: нет Всего: нет |
как ты сказал, очень классный вариант, но программа будет запускаться именно из Win...
|
|||
|
||||
| karataev |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 56 Регистрация: 28.1.2006 Где: Россия, Нижний Но вгород Репутация: нет Всего: нет |
Я предлагаю просто зарисовывать уже отработанные пиксели цветом фона, поэтому будет обновляться не весь экран, а только ненужные пиксели. Как раз можно сделать и с двухмерным массивом это.
|
|||
|
||||
| nighthare |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 37 Регистрация: 24.12.2005 Репутация: нет Всего: нет |
Думаю это не подходит по 2 причинам 1) либо это очень сложно просчитать математически и понять какие все-таки пиксели надо менять а какие нет 2) либо если я буду удалять отработанные и рисовать свои, то возникнет эффект моргания (весь монитор не будет моргать,а что я конкретно буду перерисовывать - будет, если фон и обьект контрастный, а если еще и фона как такового и нет...) Мой вопрос больше ориентирован на то, чтобы все это запихнуть по ближе к буферу видеокарты, чтоб я рисовал только следующий кадр(измененный)... я могу в терминологии (про буфер и т.д.) ошибаться, потому что не знаю как это идет на аппаратном уровне.
|
|||
|
||||
| Ozzя |
|
||||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 86 Регистрация: 19.7.2004 Репутация: нет Всего: 1 |
Тупиковый вариант, однозначно.
ТО есть нужен 32-х разрядный компилятор под win32
Модуль Graph TMT Pascal'я 4 все это поддерживает. |
||||||
|
|||||||
| nighthare |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 37 Регистрация: 24.12.2005 Репутация: нет Всего: нет |
Все пишется на Borland Turbo Pascal 7.0 ( это что-то вроде некого задания на семестр, я ищу подходу к этой теме, хочется сделать по красивее) запускается все это дело через виндовский эмулятор доса ( насколько я понимаю )
|
|||
|
||||
| Ozzя |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 86 Регистрация: 19.7.2004 Репутация: нет Всего: 1 |
nighthare,
Тогда какие проблемы? Режим EgaHi - 640X350 Две страницы аппаратных. Нарисовали , поменяли страницу, Нарисовали Это сообщение отредактировал(а) Ozzя - 16.2.2006, 17:10 |
|||
|
||||
| volvo877 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2073 Регистрация: 15.11.2004 Репутация: 2 Всего: 116 |
В таком случае копай в сторону процедур: SetActivePage/SetVisualPage... И делай, как посоветовал remax, пока один экран ВИДИМ, другой устанавливаем АКТИВНЫМ, и готовим картинку. Как только подготовили - SetVisualPage на эту страницу - картинка появляется за 1 проход луча по монитору... |
|||
|
||||
| nighthare |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 37 Регистрация: 24.12.2005 Репутация: нет Всего: нет |
Спасибо, буду копать.
|
|||
|
||||
| nighthare |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 37 Регистрация: 24.12.2005 Репутация: нет Всего: нет |
делаю так :
эффект моргания не пропал, но вроде стал меньше... есть еще какие-нибудь способы? (полный пример выложу в раздел помощи) |
|||
|
||||
| Ozzя |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 86 Регистрация: 19.7.2004 Репутация: нет Всего: 1 |
refresh отслеживай
|
|||
|
||||
| nighthare |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 37 Регистрация: 24.12.2005 Репутация: нет Всего: нет |
Простите за глупый вопрос, но как его отслеживать? Вместо cleardevice впихнул закраску всего экрана черным цветом(после setactivepage(1); перед setvisualpage(1);) получил ужасное моргание
|
|||
|
||||
| cardinal |
|
|||
![]() Инженер ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6003 Регистрация: 26.3.2002 Где: Германия Репутация: нет Всего: 99 |
Посмотри про двойную буфферизацию в инете. Именно это вариант решения проблемы моргания, при передвижении объектов. Но не уверен, что в данной ситуации подходящий. Но я бы капнул в эту сторону...
-------------------- Немецкая оппозиция потребовала упростить натурализацию иммигрантов В моем блоге: Разные истории из жизни в Германии "Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино". А. и Б. Стругацкие |
|||
|
||||
| Ozzя |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 86 Регистрация: 19.7.2004 Репутация: нет Всего: 1 |
Ждем обратного хода луча
|
||||
|
|||||
![]()
|
| Правила форума "Delphi" | |
|
|
Запрещается! 1. Обсуждать и делится взломанными компонентами или программным обеспечением 2. Публиковать ссылки на варез 3. Оффтопить
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, THandle, Rrader, volvo877. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Object Pascal: кроссплатформенные технологии | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |