Переводы туториалов MDX на vb.NET Express.

Работа с 2D и 3D графикой, видео, звуком.

Модератор: Mikle

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Переводы туториалов MDX на vb.NET Express.

Сообщение Mikle » 19.05.2007 (Сб) 9:55

У меня имеется SDK для VS 2003. Express переводит примеры оттуда не совсем корректно. Я, в целях освоения Express, поисправлял эти ошибки, теперь туториалы работают.
В процессе работы я так и не понял, зачем эти примеры ТАК усложнены. Возможно все дело в моем непонимании концепции .NET. Первый пример я полностью переписал так, как, по моему мнению, понятнее. Кроме того вышло вдвое короче.
Выяснилось неприятное обстоятельство - примеры работают КРАЙНЕ медленно. То есть бинарники из SDK, скомпилированные на 2003-й студии, работают нормально, но даже жалкая очистка бэкбуфера (первый туториал) в окошке 400*300 дает каких-то 50-60 FPS на Express.
Хотелось бы с этим разобраться, примеры прилагаю, в том числе мой вариант.
У вас нет доступа для просмотра вложений в этом сообщении.

mdx
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 169
Зарегистрирован: 06.01.2006 (Пт) 18:13
Откуда: I'm from Russia!

Сообщение mdx » 19.05.2007 (Сб) 13:54

Вообще в .net пустое d3d приложение (только с очисткой бэкбуфера) почему-то работает примерно с такой же скоростью, как и приложение,рисующее достаточно большой меш. В каком-то блоге читал про "идеальный" игровой цикл, но он выдавал примерно такие же результаты :( . Все-таки native быстрее
This posting is provided "AS IS" with no warranties, and confers no rights.

Изображение

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Сообщение Mikle » 19.05.2007 (Сб) 15:11

mdx
То, что native быстрее, это понятно. Но ведь примеры на VS 2003 работают достаточно быстро.

keks-n
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2509
Зарегистрирован: 19.09.2005 (Пн) 17:17
Откуда: г. Москва

Сообщение keks-n » 19.05.2007 (Сб) 17:08

Народ. Есть в VB.NET такая хорошая особенность - возможность ручного импорта интерфейсов.
То есть, Делаем Public Interface бла-бла-бла.
Описания выдёргиваем из сишных заголовков. После чего делаем Direct3DCreate9 и получаем ссылку на интерфейс.
После чего можно делать прорисовочные действия. Проблема состоит в переводе заголовков.
Изображение

mdx
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 169
Зарегистрирован: 06.01.2006 (Пт) 18:13
Откуда: I'm from Russia!

Сообщение mdx » 19.05.2007 (Сб) 19:20

И все равно это будет медленно... Вот если попробовать создавать окно через winapi может что-то будет, тк мне кажется, что тормозит именно обработка сообщений в форме... Чего-то там делается...
This posting is provided "AS IS" with no warranties, and confers no rights.

Изображение

keks-n
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2509
Зарегистрирован: 19.09.2005 (Пн) 17:17
Откуда: г. Москва

Сообщение keks-n » 19.05.2007 (Сб) 21:31

mdx
Открою секрет. Отрисовка изображения с WndProc не связана абсолютно никак. Ибо для вызова оной необходим вызов GetMessage+DispatchMessage(DoEvents), который во время прорисовки никто не делает.
Изображение

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Сообщение Mikle » 20.05.2007 (Вс) 9:12

При окне 400*300 у меня около 60 FPS, при разворачивании на весь экран (1024*768) падает до 30, при этом процессор нагружен на 1-2 %. VB6-DX8 на таких же действиях выдают тысячи\сотни FPS. Сколько дает VS2003 не знаю, так как откомпилированных туториалов нет, но откомпилированные более сложные примеры работают достаточно быстро (как правило >500 FPS). То есть тормозит именно видео, может конфликтуют дрова с вторым фреймворком? Потестируйте, Please, у кого есть vb Express, и напишите свой FPS\конфиг.

keks-n
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2509
Зарегистрирован: 19.09.2005 (Пн) 17:17
Откуда: г. Москва

Сообщение keks-n » 21.05.2007 (Пн) 12:45

Mikle
Попробуй подключить восьмые иксы к VB.NET. Тогда станет понятно, что именно тормозит(.NET переходник или VB.NET/иксы(маловероятно))
Изображение

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Сообщение Mikle » 21.05.2007 (Пн) 13:06

keks-n
И восьмые иксы, и даже мой софтверный движек, работают на .NET достаточно быстро.

Bonesnapper
Постоялец
Постоялец
 
Сообщения: 434
Зарегистрирован: 12.09.2004 (Вс) 15:39

Сообщение Bonesnapper » 21.05.2007 (Пн) 13:35

я б тоже потестил но
ехе у меня не работают :(
а .нет нету :)

keks-n
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2509
Зарегистрирован: 19.09.2005 (Пн) 17:17
Откуда: г. Москва

Сообщение keks-n » 21.05.2007 (Пн) 15:09

Mikle
Кстати, насчёт софтвенного движка - не пробовал перевести взаиможействие с ним на COM? Тогда не пришлось бы писать класс - оболочку, только tlb подключить.
+Где можно взять алгоритмы по работе с 2D? Просто пишу софт-движочек(как у тебя тока примитивный и на C++) для Windows Mobile(ибо нормальных, с которым можно работать из под VB.NET не нашёл)
Изображение

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Сообщение Mikle » 21.05.2007 (Пн) 15:27

keks-n
Так у меня в движке и так весь интерфейс, кроме SetDirLite, реботает из класса, то есть можно просто скомпилировать, и будет COM DLL.
А на .NET я его уже перевожу, почти готово, можно будет пользоваться.
Bonesnapper
Поставь второй фреймворк.

mdx
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 169
Зарегистрирован: 06.01.2006 (Пт) 18:13
Откуда: I'm from Russia!

Сообщение mdx » 22.05.2007 (Вт) 13:42

keks-n писал(а):mdx
Открою секрет. Отрисовка изображения с WndProc не связана абсолютно никак. Ибо для вызова оной необходим вызов GetMessage+DispatchMessage(DoEvents), который во время прорисовки никто не делает.

Если ты можешь сворачивать окно, alt-tabать или ловить клавиши через OnKeyDown - то обработка сообщений происходит...
This posting is provided "AS IS" with no warranties, and confers no rights.

Изображение

keks-n
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2509
Зарегистрирован: 19.09.2005 (Пн) 17:17
Откуда: г. Москва

Сообщение keks-n » 22.05.2007 (Вт) 16:54

mdx
Гм. Без вызова DoEvents из цикла прорисовки этого не будет происходить. Да и шустро это в .NET происходит. Проблема, видимо, в переходнике к иксам.
Изображение


Вернуться в Мультимедиа

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 11

    TopList  
cron