Pull to refresh

Comments 10

К сожалению, для DX9 подобных утилит я не нашел. Наличие такой тулзы помогло бы в поиске ошибки с копированием данных в текстуру.

В DirectX SDK есть утилита PIX с которой всё удобно дебажится. https://en.wikipedia.org/wiki/PIX_(Microsoft) Но DxSDK давно уже не обновляется, а удобные инструменты дебага перенесены прямо в VisualStudio https://msdn.microsoft.com/ru-ru/library/hh873207(v=vs.140).aspx
Спасибо, что напомнили. Для DX9 я перебрал много тулзов, но они были все бесполезны, и я решали не останавливаться на их обзоре.
Вначале PIX долго отказывался запускаться на Win7 64 bit. После очередной скачанной версии, он все же завелся, но захватить фрейм из Unity проекта так и не получилось...

Тулзы в VisualStudio работают с DX10 и старше. К сожалению, для нас DX9 API является основным. Учитывая прошлогоднюю статистику, около 40% наших пользователей имеют видеоадаптер с поддержкой DX9 максимум.
Еще из интересного я пробовал 3D Ripper http://www.deep-shadows.com/hax/3DRipperDX.htm. Он делал полный дамп памяти DX9 проекта и сохранял в человеческом виде на диск. К сожалению, Ripper не обновляется с 2011 года и сейчас почти не работает, но проекты 2010-х годов вскрывает на ура.

Если эта информация полезна, то могу ее добавить в статью — в раздел разработки под Windows.
Решил проверить, скачал и установил DXSDK June 2010 на Unity 5.3.2p4 собрал билд под DX9 и он прекрасно запустился под PIX-ом, захват фрейма прошёл успешно. После чего сделал билд для DX11 и так же успешно отдебажил под VisualStudio 2015. Правда я сейчас на Windows10 но и на 7 у меня всё работало отлично.
Пруф в виде скриншота PIX

Скриншот

Очень интересно! Завтра проверю PIX с июньского SDK и сообщу о результатах.
У меня тулзы VisualStudio 2015 тоже работали на DirectX 10 и выше. Поскольку разработка велась под 9-ку, они были не актуалены.
Вы были правы. Июньский PIX работает с DX9 в Unity проектах.
Изначально, при попытке захватить фрейм, приложение просто падало. Попробовал другую машину с свежей виндой, сразу поставил июньский DX SDK, и свежий Unity – все заработало. Видать винда, на которой велась разработка слишком загажена, она уже пару лет не менялась...
Если будете пользоваться Unity функцией для каллбэков из ios натива в своей статичной либе, то есть

void UnitySendMessage(const char* obj, const char* method, const char* msg);

то чтобы либа скомпилировалась, нужно подключить Unity библиотеку (libiPhone.a) или же можно в Xcode проекте добавить .pch файл c ее объявлением

#ifdef __cplusplus
extern "C" {
#endif

void UnitySendMessage(const char* obj, const char* method, const char* msg);

#ifdef __cplusplus
}
#endif

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

Не буду устраивать антирекламу другим плагинам, напишу только нюансы с которыми столкнулся.
Года пол назад купили самый рекомендуемый плагин для проигрывания видео, в нем не понравилось:

  • для старта проигрывания видео требовалось некоторое время..
  • пока первые кадры не декодировались, текстура была залита розовым цветом (фейл какой-то..). Пришлось сооружать костыли
  • быстро просмотрел шейдера, имхо, там много лишнего. В моей версии шейдера в раза 2 полегче.
  • было подозрение на излишнее использование оперативной памяти (для мобилок критично), но тут точно говорить не буду, сравнительные тесты не проводил.

Не думаете о релизе своего плагина в ассет-сторе?

Это вопрос к высшему руководству. Но вроде в планах есть. Надо еще учесть, что плагин разрабатывается под внутренние нужды компании.
Понятно, спасибо большое за информацию.
Sign up to leave a comment.

Articles