Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер
Регистрация

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

Здесь нужно купить рекламу за 25 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

Ответ
 
Опции темы
Старый 15.07.2008, 22:06   #1
notnap
 
Регистрация: 15.07.2008
Сообщений: 3
Вопрос Быстрая графика (вопрос)

Здравствуйте!
Столкнулся с проблемой вывода пикселов на экран в Win32. Насколько я понимаю, это надо делать посредством ассемблера (чтобы побыстрей плюс прямой доступ к адаптеру). Перебрал много книг - везде речь идет о DOS, - и когда я вызываю основную функцию 10h, то Windows выдает ошибку. Варианты типа SetDIBits, BitBlt не подходят (хотя с ними все и работает), т.к. хотелось бы своими ручками делать расчет, буфферизацию, вывод точек и т.д... И с максимальной скоростью.
Что можете подсказать?..
П.С.: хотелось бы знать как с этой проблемой справляется DirectDraw или OpenGL.
Спасибо.
notnap вне форума   Ответить с цитированием
Старый 15.07.2008, 22:41   #2
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

Windows не допускает прямое обращение к аппаратуре и к функциям БИОС/видео-БИОС. Вся работа осуществляется через драйверы устройств. DirectX или OpenGL всего лишь используют большую часть возможностей видеокарты, чем GDI. Работайте через стандартные функции GDI или DX/OGL, смотря, что именно нужно. Быстрее Вы уже не сделаете, даже на ассемблере.
B_N вне форума   Ответить с цитированием
Старый 15.07.2008, 23:36   #3
notnap
 
Регистрация: 15.07.2008
Сообщений: 3
По умолчанию

Просто дело в том, что через ГДИ - это 2 варианта: 1) CreateCompatibleBitmap, и 2) CreateDIBSection. В 1-ом варианте скорость BitBlt при копировании (на дисплей) с Bitmap высокая, но на сам Bitmap приходится дополнительно копировать точки из буфера, а это само по себе лишний перебор массива, который уменьшает скорость. А во 2-ом варианте этот третий буффер не нужен, и я работаю прямо с пикселями Bitmap'а, но в этом случае по необъяснимым мной причинам BitBlt работает в несколько раз медленней. В итоге палка о 2-ух концах. И оба конца не "в тему"...
Кстати насчет ДХ. Там вроде и оконный и полноэкранный режимы - и если даже в оконном он работает через ГДИ, то полноэкранный - вряд ли...?
notnap вне форума   Ответить с цитированием
Старый 16.07.2008, 12:18   #4
rpy3uH
добрый няша
СуперМодератор
 
Аватар для rpy3uH
 
Регистрация: 29.10.2006
Сообщений: 4,806
По умолчанию

notnap, лучше всего займись DirectDraw (или вообще DirectX)! По-моему, быстрее чем через DirectDraw у тебя не получится.
Цитата:
Сообщение от notnap Посмотреть сообщение
т.к. хотелось бы своими ручками делать расчет, буфферизацию, вывод точек и т.д... И с максимальной скоростью.
самый главный вопрос зачем это надо? если от того, что просто захотелось, то лучше изучай DirectX - пригодится в жизни.

Последний раз редактировалось rpy3uH; 16.07.2008 в 12:22.
rpy3uH вне форума   Ответить с цитированием
Старый 16.07.2008, 20:53   #5
notnap
 
Регистрация: 15.07.2008
Сообщений: 3
Подмигивание

Цитата:
Сообщение от rpy3uH Посмотреть сообщение
По-моему, быстрее чем через DirectDraw у тебя не получится. самый главный вопрос зачем это надо?
А быстрей и не надо. Я хочу знать как работает с видоадаптером DirectDraw - и сделать тоже самое. Или, возможно, немного по-другому, более применительно к тому, что собираюсь на этой основе делать дальше. Не думаю, что создатели ДД сотворили нечто столь сложное, что прям разобраться невозможно...
notnap вне форума   Ответить с цитированием
Старый 16.07.2008, 22:18   #6
JTG
я получил эту роль
Старожил
 
Аватар для JTG
 
Регистрация: 25.05.2007
Сообщений: 3,694
По умолчанию

Цитата:
Я хочу знать как работает с видоадаптером DirectDraw - и сделать тоже самое
А я хочу знать как работает Windows и сделать тоже самое
Это просто нереально, воспринимай как факт. ДиректХ общается с железом в обход виндовых систем, в этом и есть причина его быстродействия. Вряд ли простой смертный может написать аналог DirectDraw, в 1000 раз быстрее будет выучить DirectX API, зачем велосипед изобретать
пыщь

Последний раз редактировалось JTG; 16.07.2008 в 22:22.
JTG вне форума   Ответить с цитированием
Старый 03.02.2009, 00:49   #7
Van Kalsing
Новичок
Джуниор
 
Регистрация: 02.02.2009
Сообщений: 1
По умолчанию

если хочешь знать как работает ДХ с аппаратурой, то надо найти стандарты драйверов поддерживаемых директом. потом получить прямой доступ к видеопамяти. и используя аппаратную поддержку совершать задуманное.

правда такой способ весьма трудоемкий: найти на русском эти стандарты нериал наверно, да и доступ ты врядли получишь, даже если перейдешь в 0 уровень.
Van Kalsing вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
какая из трех сортировок (обменная,исчерпыванием,выбором) самая быстрая? Cyberbest Помощь студентам 2 26.04.2008 10:34
Графика V1rusPro Общие вопросы .NET 0 22.04.2008 08:25
графика ben95 Общие вопросы Delphi 3 06.02.2008 23:24
возможна ли быстрая загрузка в WebBrowser? furstenberg Работа с сетью в Delphi 10 09.01.2008 03:33


12:48.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.