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

Вниз

DirectX   Найти похожие ветки 

 
trotski   (2002-11-11 21:18) [0]

Помогите разобраться.
Решил поставить DirectX (DirectDraw & Common) заголовки от Jedi.
Как компоненты не удалось, тогда стал их добавлять в проекты.
Далее с одного сайта скачал пошаговое объяснение.
DirectDraw:IDirectDraw объявлял в разделе private формы.
Туда же засунул DDSurfaceDesc:TDDSurfaceDesc.
Инициализировал, режимы переключать научился, а вот дальше пошли одни вопросы.
В учебничке идет такой код :

... if PrimarySurface.GetAttachedSurface( DDSCaps, BackBuffer ) <> DD_OK then
Raise Exception. Create ( "Failed to get back buffer surface" ) ; ...
Что это за PrimarySurface я так и не понял. В заголовках Jedi не встречается,
Delphi ругается не по-русски. Решил в разделе private формы их описать.
После этого компиляция прошла успешно, да вот только прога вешает винду намертво.
И еще, добавил я ExceptionHandler, чтобы у GDI все отнимать.

Как альтернативу взял DelphiX, а Delphi выдает мне ошибку interface must be finalization.
Но я кода этого японского не трогал, а все кругом качают оттуда же и нахваливают.
Объясните, пожалуйста, откуда у меня растут руки?


 
lenin_   (2002-11-12 12:41) [1]

Н-да... НаГываетесь, товаГищ, на утвеГждение. По поводу того, откуда Гастут. :)
КоГоче: писать под DirectDraw, не зная, что такое primary surface - это всё Гавно (извините, это пГононс такой :)), что сесть за комп, не зная, что такое клавиатуГа.
В общем, как завещал великий я: for n:=1 to 3 do "учиться". КонкГетнее: учить теоГию. Купить книжку какую-нибудь, вот товаГищ КГаснов ничего написал, или товаГищ ТГухильо. На

http://www.delphikingdom.com/helloworld

есть цикл статей по DX, на

http://delphigfx.mastak.ru

куча пГимеров. И писать свою пеГвую DX-пГогГамму лучше не с нуля, а модифициГуя существующий пГимер (ИМХО).


 
trotski   (2002-11-12 21:40) [2]

Я не про то писал, что не понял про PrimarySurface. Это я уяснил. С Jedi разобрался, но теперь не работает OutText и Flip. Прога зависает, а пошаговая отладка не катит, так как там метод Lock. И примеры, в множестве скачанные с инета не работают. Ленин, можно я вам исходники на мыло пришлю? Мне оч. надо быструю графику, я не специалист, признаю. Просто работа такая идет. Я математик


 
Sapersky_   (2002-11-13 23:04) [3]

lenin - это я :)
Не люблю многоличие, но в данном случае поглядел на ваш ник - и чёрт дёрнул :)
Прислать исходники - можно... а что за задача? Может, вообще лучше обойтись без DX?


 
trotski   (2002-11-14 06:07) [4]

Задача такая - с одного прибора идет инфа с частотой 500 Гц блоками по 64 байта. Надо на одном графике отображать все 64 байта, а на другом, как на самописце показывать максимумы каждого кадра. Пробовал разные варианты и компоненты, ящик начинает ругаться, что я ему мало внимания уделяю, т.е. не успеваю. Сейчас уже немного разобрался, уровни отображаю, осталось самописец реализовать. Т.е. сдвигать всю картинку влево, а на освободившееся место добавлять текущий уровень


 
Sapersky_   (2002-11-14 14:31) [5]

Н-да, всё было бы очень просто, если бы не минимальные 500 FPS :)
Я тут малость похимичил (интересно стало, можно ли в принципе сделать осциллограф с такой скоростью вывода) - разогнал до 1050 FPS в fullscreen 800*600 :) . Это в режиме Direct3D HAL, т.е. при наличии ускорителя. В софтверном - 400 FPS, при наличии более мощного, чем у меня, процессора (Celeron 500) должно быть больше.
Единственная проблема - на графиках с резкими скачками имеется мерцание, из-за отсутствия вертикальной синхронизации. Нужен монитор с refresh rate 500 Гц :)


 
pasha676   (2002-11-14 17:11) [6]

Троцкий. Ну кто так делает. Тебя спасает, что ты математик (из меркантильных интересов, вдруг трехмерную задачку надо будет решить, тут мы тебя и споймаем). 500 фпс выводить на фиг не надо (глаз один фиг не заметит, а проц нагрузишь). Надо сделать буфер. Накапливать там, например, штук 40 измерений, после прихода сорокового все это дело отрисовывается и флипуется. Что еще? А поток приема данных с устройства должен работать паралельно графическому выводу (параллельные потоки, нити, треды - там читай). В такой раскладке и дельфиХ спраситься. Графики я дусаю не сильно навороченные по сложности.


 
Sapersky_   (2002-11-14 17:41) [7]

2Pasha676:
> глаз один фиг не заметит

В данном случае - заметит. 500 FPS - это сдвиг осциллографа на 500 пикселей за секунду, не так уж и быстро на самом деле, резкие скачки на графике вполне можно будет рассмотреть, особенно если разрешение больше поставить.
Накапливать - это хорошо, но как рисовать накопленное добро? Всё сразу - тогда осциллограф скакнёт на 40 пикселей. Считать как один усреднённый результат - тогда точность сильно снизится.
Вообще, я подумал, нужно сначала получить результаты измерений - записать на диск или сохранить в памяти, а потом уже просматривать.


 
pasha676   (2002-11-15 08:39) [8]

2Саперский

Не фига. Если буферизовать по 20 строк данных и выводить их со скоростью 25 кадров с секунду (все выводя не усредняя), то глазу будет передаваться равномерная картинка. Глаз физически не воспринимает изменения быстрее 24-25 ФПС. В трехмерных играх большие фпс дают не столько качество графики, сколько плавность управления (работа системы глаз-мозг-рука). Когда писал ситемы стереовиденья я в этом убедился. В них увеличение частоты выше 50 Гц (по 25 смен картинок на глаз) давало не качество или скорость картинки, а комфорт для глаз (глаза меньше устают).


 
Sapersky_   (2002-11-15 11:56) [9]

Проверил. Если через 5 кадров, то ещё ничего, а если через 10 и тем более 20 - дёргается. Ну ладно, может, это у меня руки кривые.
Пусть автор вопроса доводит до ума, если ещё объявится.


 
trotski   (2002-11-15 17:57) [10]

Спасибо за помощь. Про 500 кадров я писал в том смысле, что графика не должна мешать сливу инфы, протокол там дурацкий. Поставил приоритеты на максимум, замутил самописец(чтобы все отображалось делаю Surface.Fill(0) только когда полная картинка накопится), все вроде работает. А отображать мне достаточно 20 раз в секунду. Еще раз спасибо засоветы, они очень помогли.



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

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

Наверх















Память: 0.86 MB
Время: 0.037 c
14-5715
Сергей
2003-02-13 02:02
2003.03.03
Своеобразная


1-5537
sndanil
2003-02-21 12:43
2003.03.03
Графики


3-5429
wHammer
2003-02-13 09:36
2003.03.03
ShowMessage(InttoStr(Query5.RecordCount));


1-5513
Lamak
2003-02-20 20:55
2003.03.03
Вопрос про размер exe-файла.


8-5672
AlekseyK
2002-11-16 11:21
2003.03.03
Scroll на image





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский