Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.05.18;
Скачать: CL | DM;

Вниз

СОС!!! (Быстрый вывод изображения. 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 вся ветка

Текущий архив: 2008.05.18;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.021 c
6-1185709539
Новичек
2007-07-29 15:45
2008.05.18
Работа с Telnet.


2-1208127399
HF-Trade
2008-04-14 02:56
2008.05.18
Размер файла в сети


15-1207118358
Рамиль
2008-04-02 10:39
2008.05.18
Так, признавайтесь..


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


8-1179987008
NewZ
2007-05-24 10:10
2008.05.18
Формат *.wav файла. Как разрезать *.wav файл?