Войти
ПрограммированиеФорумФизика

PhysX и навязчивый дебаг режим

Страницы: 1 2 Следующая »
#0
5:11, 25 июня 2019

Я отлаживзю аппликацию в дебаге. Все отлично работает, но PhysX дико тормозит. Вместо 90 fps имею 10, что для VR ни в какие ворота...
Мне НЕ нужно отлаживать физику, там все ОК, но VS желает линковать дебажный сорс только с дебажной библиотекой (библиотеки статические, собрал из сорсов на GitHub - PhysX-4.0)
Может кто знает как эту холеру отрубить? Может можно отключить эти тормоза в дебажной версии PhysX, или что-то можно в моем проекте подшаманить?
Конкретно задолбало...


#1
5:37, 25 июня 2019

san
> Может кто знает как эту холеру отрубить?
Зайти в свойства своего проекта и поменять руками для Debug сборки на релизный lib не помогает?

#2
(Правка: 5:52) 5:46, 25 июня 2019

MrShoor
> Зайти в свойства своего проекта и поменять руками для Debug сборки на релизный lib не помогает?

Так в релизе все летает. Собственно и в дебаге тормозит именно физика, если ее вообще отключить то отрисовка идет практически мгновенно (ну за 4 мс).
У меня там висит цепочка из 30 звеньев, в релизе она совершенно натурально качается и весь процесс на CPU (смотрел в WPRUI) занимает 0.5 мс. В дебаге - 50 мс.
Если заменить дебажную библиотеку на релизную, то VS матерится и не линкует. Желает что бы все было в дебаге...

#3
6:04, 25 июня 2019

san
> Если заменить дебажную библиотеку на релизную, то VS матерится и не линкует.
Что пишет то?

#4
6:33, 25 июня 2019

Severity  Code  Description  Project  File  Line  Suppression State
Error  LNK2038  mismatch detected for 'RuntimeLibrary': value 'MT_StaticRelease' doesn't match value 'MTd_StaticDebug' in 3Dmodels.obj  FBuilder  B:\Development\Fractal_Alchemist\FBuilder\PhysX_static_64.lib(NpPhysics.obj)  1 
Severity  Code  Description  Project  File  Line  Suppression State
Error  LNK2038  mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '0' doesn't match value '2' in 3Dmodels.obj  FBuilder  B:\Development\Fractal_Alchemist\FBuilder\PhysX_static_64.lib(NpFactory.obj)  1 

И т.д.

#5
7:08, 25 июня 2019

san
У тебя 3Dmodels собрается с дебажным рантаймом, а PhysX c релизным. В своих проектах устанавливай релизный рантайм тоже.

#6
9:22, 25 июня 2019

san
Очисти и пересобери все проекты на релиз.

#7
(Правка: 19:01) 18:55, 25 июня 2019

MrShoor
> тебя 3Dmodels собрается с дебажным рантаймом, а PhysX c релизным. В своих проектах устанавливай релизный рантайм тоже.
Ничего не понял. Так ты же сам сказал попробовать с релизной библиотекой. Что я и сделал. И я сразу сказал, что этот вариант не проходит, поскольку линковка ругается, но ты спросил что ругается - я показал.
Если у меня проект и библиотека дебажные, или оба они релизные - то все работает.  Но в случае дебажной библиотеки все делается крайне медленно, собственно поэтому я эту ветку и начал.

Еще раз - мне надо запустить проект под дебагером (он собран разумеется в дебаг-режиме), но физика (PhysX) должна быть релизной.
Или может быть можно как-то ослабить там дебажные функции что бы убрать дикие тормоза. Я просто с этим не сталкивался, потому и спрашиваю.

#8
(Правка: 19:22) 19:21, 25 июня 2019

san
Project->Clean->Build all

У тебя один из объектников всё ещё линкуется с дебаг crt, который не совместим с релизным, поэтому кидает ошибки.

#9
20:17, 25 июня 2019

san
собрать релизную dll

#10
(Правка: 22:01) 22:00, 25 июня 2019

san
> Еще раз - мне надо запустить проект под дебагером (он собран разумеется в
> дебаг-режиме), но физика (PhysX) должна быть релизной.
И твой проект и PhysX используют плюсовый рантайм. Тебе нужно использовать одинаковую сборку рантайма и там и там.
Ты знаешь что такое плюсовый рантайм?

#11
(Правка: 3:16) 2:57, 26 июня 2019

MrShoor
> Ты знаешь что такое плюсовый рантайм?
Нет. Но очень хотел бы узнать. Расскажи, а то VS я осваивал самоучкой. Исторически я скорее юниксист.

monobogdan
>У тебя один из объектников всё ещё линкуется с дебаг crt, который не совместим с релизным, поэтому кидает ошибки.
Честно сказать я так не думаю, но попробую то что ты советуешь. Но не сейчас. В данный момент сижу на бекьярде с бутылкой пива. :)

#12
(Правка: 3:35) 3:32, 26 июня 2019

san
> Нет. Но очень хотел бы узнать. Расскажи, а то VS я осваивал самоучкой.
> Исторически я скорее юниксист.
Стандартная библиотека плюсов. Грубо говоря то, что находится в std::
Она поставляется вместе с компилятором и является частью стандарта.
Для себя можешь представить rtl (Runtime Library) как невидимый проект, добавляемый ко всем твоим vcxproj-ам. Так вот проблема в том, что у тебя релизный PhysX скомпилирован с релизной версией rtl, а свой проект ты компилируешь с дебажной версией. В результате оно не может слинковать, потому что разные rtl в разных проектах.
Поменять версию рантайма можно вот в этом выпадающем списке:
rtl | PhysX и навязчивый дебаг режим
Нужно поставить одинаковую для всех всех всех зависимостей, указанных в *.lib
То есть все вот эти lib файлы:
libs | PhysX и навязчивый дебаг режим
Должны быть собраны с одинаковой версией рантайма.

upd. На самом деле конечно же не все lib должны быть собраны с одинаковым rtl, а только те, которые используют rtl. Короче просто поставь в своём проекте релизный рантайм.

#13
3:58, 26 июня 2019

MrShoor
Стоп. Это критично - использовать DLL?
Возможно это пережитки палеолита в моем сознании, но я терпеть ненавижу DLL и всегда собираю проекты со статическими библиотеками. Все остальное вроде у меня идентично. Ты хочешь сказать, что PhysX использует dll, а я нет? Но я вроде ставил там в сборке /MT. На 90%. Но когда покончу с пивом - проверю.

#14
4:08, 26 июня 2019

san
> Стоп. Это критично - использовать DLL?
Критично использовать не DLL, а одинаковый рантайм во всех библиотеках. Видишь там рантаймы с Debug и без Debug? Вот у тебя PhysX использует MT_StaticRelease что равно строке Multi-threaded (/MT), а твой проект при этом использует MTd_StaticDebug, что равно строке Multi-threaded Debug (/MTd).

Страницы: 1 2 Следующая »
ПрограммированиеФорумФизика