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

Вниз

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 вся ветка

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

Наверх




Память: 0.49 MB
Время: 0.26 c
1-5507
Alex
2003-02-20 21:08
2003.03.03
« Эмуляция командного процессора Unix в среде Win9х »


14-5842
Manulo
2003-02-13 21:07
2003.03.03
Самы мы не месные.. :)


14-5718
Дмитрий К.К.
2003-02-14 06:23
2003.03.03
Именинники 14 февраля


6-5678
Leviathan
2002-11-25 21:50
2003.03.03
TWebBrowser


14-5740
dobriy
2003-02-15 09:18
2003.03.03
проблема с функциями