Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Media";
Текущий архив: 2008.05.18;
Скачать: [xml.tar.bz2];

Вниз

СОС!!! (Быстрый вывод изображения. OpenGL?)   Найти похожие ветки 

 
Огнеяр   (2007-05-24 15:52) [0]

Я застрял. Проблема в том, чтобы вывести на экран содержимое TBitmap максимально быстро и без миганий. Поможите, кто чем может, уже месяц мучаюсь.

Задача:
Выводить на экран (можно на форму) исображения из файлов. частота вывода до 20 мкс с точностью до 1-3 мкс. Предполагаю, что это можно сделать через Директ Х или Опен ГЛ, но я с этими библиотеками совершенно не знаком.

Краснова прочитал, но там трехмерные задачи, а у меня - плоская графика. Либо, просто не понял.


 
DVM ©   (2007-05-24 15:55) [1]


> TBitmap максимально быстро и без миганий

BitBlt() мигает разве? Да она 1000 битмапов 800х600 в секунду может вывести.


 
DVM ©   (2007-05-24 15:57) [2]


> частота вывода до 20 мкс с точностью до 1-3 мкс

Ты не ошибся насчет микро- ? Если выводить через 20 микросекунд - то это за секунду будет 50 000 битмапов!!! Что это такое?


 
antonn ©   (2007-05-24 15:58) [3]

стробоскоп какой то...


 
Ognejar1   (2007-05-24 19:14) [4]

Уточняю.
Изображений от 2 до 3. Период вывода - разный, но точность его должна быть такой, как я сказал. Одна картинка стирает другую, затем точная пауза (до 10 секунд).

Нужен кусок кода, потому что я уже обалдел от разноязыких книжек, где все, якобы, элементарно, поэтому и не объясняется.

Блин, куда здесь пароль вводить?


 
DVM ©   (2007-05-24 21:28) [5]


> но точность его должна быть такой, как я сказал.

такую точность нельзя обеспечить.

Мне вообще непонятно на кой ляд сменять изображения быстрее, чем частота обновления экрана или время реакции пиксела (для LCD монитора).

Честно говоря я все равно не понял задачи. Можно поточнее, может и придумаем что.


 
Ognejar1   (2007-05-24 22:00) [6]

Задача - проверка мозговой реакции человека (цепочка глаз->мозг->рука) дисплеи нормальные, никаких LCD, 200 мегагерц. Собственно, я думаю, что условие слишком суровое, но беда в том, что у меня мерцает при любой частоте экрана и вывода. И почти все тексты про быстрый вывод на С, а я в нем ни уха, ни рыла. Озверел уже.


 
DVM ©   (2007-05-24 22:21) [7]

Так уже яснее.

Теперь давай прикинем. Итак:

1) Тебе нужны миллионные (1/1 000 000) отрезки секунды.
2) Время переключения пиксела среднестатистического LCD монитора 3-8 мсек, т.е. 3-8 тысячных(!) секунды. Т.е. монитор тебе даст ограничение по точности в 1/1000 секунды не меньше. Про CRT я вообще молчу.
3) Рука - человек должен нажать кнопку на клавиатуре. Частота сканирования клавиатуры также не высока - тоже даст свое ограничение.
4) Операционная система не может гарантировать точный отсчет столь малых интервалов времени.

Тебе точно нужны миллионные доли секунды, а не тысячные?


 
DVM ©   (2007-05-24 22:24) [8]


> но беда в том, что у меня мерцает при любой частоте экрана
> и вывода

BitBlt - это почти самый быстрый способ вывода. Мерцания быть не должно.

Покажи как выводишь.


 
homm ©   (2007-05-24 23:12) [9]

> дисплеи нормальные, никаких LCD, 200 мегагерц.

плакаль :)


 
Ognejar1   (2007-05-24 23:41) [10]

Сейчас перепроверил - мили. Извини за дезу...

Сперва выводил так:
//  if flag=1 then glBindTexture(GL_TEXTURE_2D, MyTextureTex)  // Bind the Texture to the object
//  else if flag=2 then glBindTexture(GL_TEXTURE_2D, MyTextureTex1);
картинка правильная, но мерцает.

Потом вот так:
 glClearColor (0.5, 0.5, 0.75, 1.0);
 glClear(GL_COLOR_BUFFER_BIT);
 glRasterPos2f(-0.25, -0.25);
 glPixelStorei(GL_UNPACK_ALIGNMENT, 1);

 if flag=1 then glDrawPixels(ImageWidth, ImageHeight, GL_RGB, GL_UNSIGNED_BYTE, @MyTextureTexа)
 else if flag=2 then glDrawPixels(ImageWidth, ImageHeight, GL_RGB, GL_UNSIGNED_BYTE, @MyTextureTexа1);

Теперь вместо картинки - черный прямоугольник.


 
Jeer ©   (2007-05-25 10:33) [11]


> Ognejar1   (24.05.07 23:41) [10]


а про SwapBuffer не забываешь ?


 
Ognejar1   (2007-05-25 12:38) [12]

Стоит...


 
Я Гость   (2007-05-26 16:12) [13]

чтобы не было мерцания нужно использоватьь буфферизацию и [11]


 
Ognejar1   (2007-05-29 10:54) [14]

Знать бы еще как. Говорил же, не знаю я этих библиотек.



Страницы: 1 вся ветка

Форум: "Media";
Текущий архив: 2008.05.18;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.05 c
2-1208425578
VictoR407
2008-04-17 13:46
2008.05.18
Как удалить полосы прокрутки в компоненте treeview?


2-1208335003
Andy BitOff (PPC)
2008-04-16 12:36
2008.05.18
Быстрое определение валидности Excel евского файла


2-1208278528
Mag
2008-04-15 20:55
2008.05.18
Создал две динамических объекта и не могу к ним обратиться, как?


2-1208428138
arinyshka
2008-04-17 14:28
2008.05.18
Забдокировать изменение RadioGroup


2-1208437042
Семен Кевларвестов
2008-04-17 16:57
2008.05.18
Как определить было TPopupMenu меню вызвано ShortCut или открыто.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский