Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Альтернатива GetPixel, Более быстродействующая 
:(
    Опции темы
Nastya
Дата 17.10.2003, 17:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Есть объект класса CDC, созданный при помощи CreateCompatibleDC, там какой-то рисунок. Задача в цикле перебрать все точки и сравнить их цвет с заданным. Все это работает жудко медленно. Как мне кажется дело в GepPixel, похоже время уходит на приобразования цвета из "понятного" контексту устройства в DIB. Но мне это не требуется и время на это тратить не хочется. Так мой CDC "валяется " в памяти, должен быть способ сделать все гараздо быстрее. КАК?


--------------------
Что бы понять рекурсию, надо понять рекурсию

"Профессионал - это человек сделавший все возможные ошибки в очень узкой области". Н.Бор
PM MAIL   Вверх
Baa
Дата 18.10.2003, 01:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



GetDIBits


--------------------
"Duty is everything; the greatest of joys, the deepest of sorrows" Aribeth de Tylmarande
PM ICQ   Вверх
Nastya
Дата 21.10.2003, 19:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



GetDiBits работает с битмапом, а у меня объект CDC .

Я с этимим битмапами и контекстами совсем запарилась. sad.gif
Решила сделать CreateDIBSection. Во-первы он возвращает битмап и можно будет воспользоваться GetDiBits. Во ворых ему там передается void* по которуму он должен положить масив с инфой про эти самые цвета точек.
Толи я чего не так делаю, толи ... Но массив этот у меня весь из нулей и битмап не NULL, но какой-то пустой smile.gif

Может кто приведет примерчик smile.gif


--------------------
Что бы понять рекурсию, надо понять рекурсию

"Профессионал - это человек сделавший все возможные ошибки в очень узкой области". Н.Бор
PM MAIL   Вверх
Baa
Дата 21.10.2003, 22:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Может поможет:
http://devstate.by.ru/tutorial/Draw.html


--------------------
"Duty is everything; the greatest of joys, the deepest of sorrows" Aribeth de Tylmarande
PM ICQ   Вверх
oleg1973
Дата 21.10.2003, 23:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


asm fanat
****


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

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



взять и найти бекбуффер
и читать из негоsmile.gif


--------------------
SST 465555
icq 200-512-712
PM MAIL WWW ICQ   Вверх
Nastya
Дата 22.10.2003, 17:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата
взять и найти бекбуффер
и читать из него

Неопнял


--------------------
Что бы понять рекурсию, надо понять рекурсию

"Профессионал - это человек сделавший все возможные ошибки в очень узкой области". Н.Бор
PM MAIL   Вверх
Nastya
Дата 22.10.2003, 17:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата
Может поможет:
http://devstate.by.ru/tutorial/Draw.html


Спасибо, но пока не помогло sad.gif
Кроме того пример загрузился не до конца


--------------------
Что бы понять рекурсию, надо понять рекурсию

"Профессионал - это человек сделавший все возможные ошибки в очень узкой области". Н.Бор
PM MAIL   Вверх
Baa
Дата 22.10.2003, 18:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



хм.. там же созадается задний буфер, в нем рисует... проблема была с создании?


--------------------
"Duty is everything; the greatest of joys, the deepest of sorrows" Aribeth de Tylmarande
PM ICQ   Вверх
Nastya
Дата 22.10.2003, 19:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Я тоже создаю задний буффер и внем рисую, созадтье его не проблема и посмотреть, что нарисовано тоже не проблема через GetPixel проблема сделать это быстро.
А для того что бы сделать быстро нужно обращатся на "прямую" ,а не через GetPixel, который кроме всего прочего еще и преобразует цвет из контекста к стандартному фармату.



--------------------
Что бы понять рекурсию, надо понять рекурсию

"Профессионал - это человек сделавший все возможные ошибки в очень узкой области". Н.Бор
PM MAIL   Вверх
oleg1973
Дата 22.10.2003, 23:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


asm fanat
****


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

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



ну на асме это выглядит так
comcall DDSBack,LockSurface,NULL,ddsd,DDLOCK_WAIT, NULL
mov edi,[ddsd.lpSurface]

тоесть перед рисованием в бэкбуфер его нада залочить и с этим никто не спорит верно?
после этого просто читаем из "обьекта" (ох уж эти обьектнишикиsmile.gif))) ) точнее один из "параметров" обьекта smile.gif (наверно все знают что такое обьект в реальности? некая структура в памяти проще говоря)
и в результате получаем в EDI "указатель" на наш бэкбуфер
и можем читать сколько душе угодно
mov eax,[edi]

ну а потом
comcall DDSBack,UnlockSurface,0
и все


--------------------
SST 465555
icq 200-512-712
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

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

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




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


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

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