Текущий архив: 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.47 MB
Время: 0.009 c