Модераторы: volvo877, Snowy, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Работа с Графикой, Как работать с драйвером видеокарты 
:(
    Опции темы
nighthare
Дата 15.2.2006, 22:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 37
Регистрация: 24.12.2005

Репутация: нет
Всего: нет



Собственно вопрос такой. Если перерисовывать в паскале путем очистки экрана, то возникает не приятное моргание. Как можно работать с буфером видеокарты, чтобы дальше выводить обновленный экран? можно ли сделать например так, делаем 2-мерный массив, туда заносим нужные точки, потом передаем его видеокарте, она его отрисовывает? Интересует в первую очередь как это правильно реализовать в среде Pascal ( с примерам(и) ) (так же интересно как это сделать на .net, но это немного не в тот раздел smile )
PM MAIL   Вверх
remax
Дата 15.2.2006, 22:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доцент
**


Профиль
Группа: Участник Клуба
Сообщений: 686
Регистрация: 7.4.2002
Где: Украина, Харьков

Репутация: нет
Всего: 5



В досе была возможность работы с виртуальными экранами. Один активен - на другом подготавливаем картинку. Затем меняем местами. Однако, из под Win многие досовские возможности режутся. Поэтому, надо определиться - под что писать прогу.


--------------------
Как бы ты не старался быть хорошим и правильным человеком с принципами и уважительным отношением к другим, всегда найдется кто-то, кто бросит в тебя какашку
PM MAIL ICQ Skype   Вверх
nighthare
Дата 15.2.2006, 22:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 37
Регистрация: 24.12.2005

Репутация: нет
Всего: нет



как ты сказал, очень классный вариант, но программа будет запускаться именно из Win...
PM MAIL   Вверх
karataev
Дата 15.2.2006, 23:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 56
Регистрация: 28.1.2006
Где: Россия, Нижний Но вгород

Репутация: нет
Всего: нет



Я предлагаю просто зарисовывать уже отработанные пиксели цветом фона, поэтому будет обновляться не весь экран, а только ненужные пиксели. Как раз можно сделать и с двухмерным массивом это.
PM MAIL WWW ICQ   Вверх
nighthare
Дата 16.2.2006, 15:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 37
Регистрация: 24.12.2005

Репутация: нет
Всего: нет



Думаю это не подходит по 2 причинам 1) либо это очень сложно просчитать математически и понять какие все-таки пиксели надо менять а какие нет 2) либо если я буду удалять отработанные и рисовать свои, то возникнет эффект моргания (весь монитор не будет моргать,а что я конкретно буду перерисовывать - будет, если фон и обьект контрастный, а если еще и фона как такового и нет...) Мой вопрос больше ориентирован на то, чтобы все это запихнуть по ближе к буферу видеокарты, чтоб я рисовал только следующий кадр(измененный)... я могу в терминологии (про буфер и т.д.) ошибаться, потому что не знаю как это идет на аппаратном уровне.
PM MAIL   Вверх
Ozzя
Дата 16.2.2006, 16:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 86
Регистрация: 19.7.2004

Репутация: нет
Всего: 1



Цитата

делаем 2-мерный массив, туда заносим нужные точки, потом передаем его видеокарте, она его отрисовывает

Тупиковый вариант, однозначно.

Цитата

из Win...


ТО есть нужен 32-х разрядный компилятор под win32

Цитата

работы с виртуальными экранами

Модуль Graph TMT Pascal'я 4 все это поддерживает.
PM MAIL   Вверх
nighthare
Дата 16.2.2006, 16:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 37
Регистрация: 24.12.2005

Репутация: нет
Всего: нет



Все пишется на Borland Turbo Pascal 7.0 ( это что-то вроде некого задания на семестр, я ищу подходу к этой теме, хочется сделать по красивее) запускается все это дело через виндовский эмулятор доса ( насколько я понимаю ) smile (если у кого есть примеры на эту тему для Borland C (C++) или под .NET (C#) , поделитесь smile )
PM MAIL   Вверх
Ozzя
Дата 16.2.2006, 17:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 86
Регистрация: 19.7.2004

Репутация: нет
Всего: 1



nighthare,
Тогда какие проблемы?
Режим EgaHi - 640X350
Две страницы аппаратных.
Нарисовали , поменяли страницу, Нарисовали


Это сообщение отредактировал(а) Ozzя - 16.2.2006, 17:10
PM MAIL   Вверх
volvo877
Дата 16.2.2006, 17:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2073
Регистрация: 15.11.2004

Репутация: 2
Всего: 116



Цитата(nighthare @ 16.2.2006, 15:23 Найти цитируемый пост)
Все пишется на Borland Turbo Pascal 7.0


В таком случае копай в сторону процедур:
SetActivePage/SetVisualPage... И делай, как посоветовал remax, пока один экран ВИДИМ, другой устанавливаем АКТИВНЫМ, и готовим картинку. Как только подготовили - SetVisualPage на эту страницу - картинка появляется за 1 проход луча по монитору...


PM MAIL   Вверх
nighthare
Дата 16.2.2006, 17:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 37
Регистрация: 24.12.2005

Репутация: нет
Всего: нет



Спасибо, буду копать.
PM MAIL   Вверх
nighthare
Дата 17.2.2006, 22:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 37
Регистрация: 24.12.2005

Репутация: нет
Всего: нет



делаю так :
Код

{процедура}
cleardevice;
setactivepage(1);
{Здесь ставлю точки}
setvisualpage(1);

эффект моргания не пропал, но вроде стал меньше... есть еще какие-нибудь способы? (полный пример выложу в раздел помощи)
PM MAIL   Вверх
Ozzя
Дата 18.2.2006, 11:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 86
Регистрация: 19.7.2004

Репутация: нет
Всего: 1



refresh отслеживай
PM MAIL   Вверх
nighthare
Дата 18.2.2006, 16:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 37
Регистрация: 24.12.2005

Репутация: нет
Всего: нет



Простите за глупый вопрос, но как его отслеживать? Вместо cleardevice впихнул закраску всего экрана черным цветом(после setactivepage(1); перед setvisualpage(1);) получил ужасное моргание smile . В хэлпе вдобавок написано, что это работает толька на плате Hercules... Что я не правильно делаю?
PM MAIL   Вверх
cardinal
Дата 19.2.2006, 15:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: нет
Всего: 99



Посмотри про двойную буфферизацию в инете. Именно это вариант решения проблемы моргания, при передвижении объектов. Но не уверен, что в данной ситуации подходящий. Но я бы капнул в эту сторону...


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
Ozzя
Дата 20.2.2006, 11:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 86
Регистрация: 19.7.2004

Репутация: нет
Всего: 1



Цитата(nighthare @ 18.2.2006, 16:33)
Простите за глупый вопрос, но как его отслеживать?

Ждем обратного хода луча
Код

Procedure WaitRetrace;Assembler; 
Asm 
 mov dx,$3DA 
 @lp: 
  in al,dx 
  and al,$08 
 jz @lp 
End; 

PM MAIL   Вверх
Страницы: (3) Все [1] 2 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi"
THandle
Rrader
volvo877

Запрещается!

1. Обсуждать и делится взломанными компонентами или программным обеспечением

2. Публиковать ссылки на варез

3. Оффтопить

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, THandle, Rrader, volvo877.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Object Pascal: кроссплатформенные технологии | Следующая тема »


 




[ Время генерации скрипта: 0.0591 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.