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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.01.2011, 02:16   #1
DenTiSt
Пользователь
 
Регистрация: 08.04.2010
Сообщений: 19
Вопрос Как напрямую обращаться к видеопамяти?

Насколько я разбираюсь в графике, то цвет одного пикселя хранится в четырёх байтах: байт яркости (т.е. альфа, или как-то так называется), дальше три байта - красный, зелёный и синий. Следовательно, нужно знать адрес первого байта, чтобы определить цвет пикселя. Вот меня и интересует, как можно получить адрес первого байта цвета конкретного пикселя, а также как к нему обращаться? И ещё: возможно так ли на прямую обращаться к видеопамяти в обход всех драйверов, и насколько это опасно? В смысле, не будет ли каких-то глюков с видеокартой или с системой и драйверами?
DenTiSt вне форума Ответить с цитированием
Старый 06.01.2011, 02:25   #2
vasek123
Заблокирован
 
Регистрация: 21.11.2008
Сообщений: 4,986
Сообщение

Ничего не понял, причем тут Delphi?

Юзай TCanvas и RGB и будет тебе счастье...
vasek123 вне форума Ответить с цитированием
Старый 06.01.2011, 02:30   #3
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

под ОС про это лучше забыть(исключение полноэкранное приложение(как игры))
а так, просто считывайте пиксель и потрошите на составные.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 06.01.2011, 02:30   #4
dosha
Форумчанин
 
Регистрация: 30.08.2010
Сообщений: 224
По умолчанию

эт тебе надо не делфи а асм
dosha вне форума Ответить с цитированием
Старый 06.01.2011, 02:33   #5
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
эт тебе надо не делфи а асм
нет не надо.
не надо из асма делать панацею.
я подобное делал и на С(можно и на паскале было) когда своей ОС занимался.

а под виндой всетаки у нас свое адресное пространнство и куча шареных ресурсов(один из них видеопамять) доступ к которым осуществляется под контролем ОС.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 06.01.2011, 05:27   #6
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Напрямую нельзя (вернее можно но оооооч геморройно), а вот через драйвера DirectX можно. Через буфер поверхности, например. Или через DirectDraw.
Скачайте DirectX ToolKit, там всё найдёте.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Старый 06.01.2011, 13:30   #7
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

Цитата:
Сообщение от DenTiSt Посмотреть сообщение
байт яркости
Бит яркости. Только это на "Спектруме" было )
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Старый 06.01.2011, 14:57   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
возможно так ли на прямую обращаться к видеопамяти в обход всех драйверов, и насколько это опасно?
А свой драйвер написать не хочешь? Опасно это настолько насколько неправильно ты напишешь, всего-то. Обычно так не делают, не потому что опасно а потому что не удобно, по крайней мере под популярными ОС.
Цитата:
как можно получить адрес первого байта цвета конкретного пикселя, а также как к нему обращаться?
У-у-у... Бота для линейки пишем?
Цитата:
Бит яркости. Только это на "Спектруме" было )
Ну почему же? Это было на всех VGA режимах.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 06.01.2011, 15:38   #9
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Это было на всех VGA режимах.
Кроме 13-го )
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Старый 06.01.2011, 15:47   #10
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А-а-а ну да.. В графических не везде... Теперь припоминаю, читал когда то про эмуляцию яркости при написании игр.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как к BIOS обращаться. Нужно чтение/запись BIOS. Dethon_ASM_Scarel Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 7 26.10.2011 11:40
Количество свободной видеопамяти _-Re@l-_ Общие вопросы Delphi 7 25.08.2010 20:53
Как напрямую читать\писать Alex Cones Общие вопросы Delphi 1 14.08.2010 13:39
Как в RichEdit обращаться к символам Lissisa Компоненты Delphi 2 19.02.2009 08:01