forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Blitz3D (http://forum.boolean.name/forumdisplay.php?f=45)
-   -   Проблема с PhysX (http://forum.boolean.name/showthread.php?t=4708)

jimon 11.10.2007 18:52

Re: Проблема с PhysX
 
согласен с tormozом, етот таймер далеко не идеален

Trilliput 11.10.2007 19:07

Есть предложения идеального таймера?

И что такое "вынести в отдельный поток"? может я так и делалраньше но не знаючто это так называется.

jimon 11.10.2007 20:22

Re: Проблема с PhysX
 
Trilliput
идеального таймера нету :)
вот tormoz перепробывал все и остановился на банальном блицевском таймере

в ОС программа обычно работает потоками
есть либа BlitzThreads или как то так
но я говорил про реализацию на C++
в справке было что-то расписано про синхронизацию в два потока
в одном банально идет рендер всего дела,
в другом просчитывается симуляция
даж пример валялся в SDK

хотя если чесно я хз почему не работает время симуляции
как я помню оно у мну стояло свободным (5 * DeltaTime)
и все прекрасно работало

Render
мож ты что-то напутал ?

Код:

NxReal CPhysX::UpdateTime()
{
        NxReal deltaTime;
#ifdef USE_OLD_TIMER
        static __int64 gTime,gLastTime;
        __int64 freq;
        QueryPerformanceCounter((LARGE_INTEGER *)&gTime);
        QueryPerformanceFrequency((LARGE_INTEGER *)&freq);
        deltaTime = NxReal((double)(gTime - gLastTime)/(double)freq);
        gLastTime = gTime;
#endif
#ifdef USE_NEW_TIMER
        deltaTime = (NxReal)(dev->getTimer()->getTime() - LastAnimationTime);
        LastAnimationTime = dev->getTimer()->getTime();
#endif
        return deltaTime;
       
}

void CPhysX::StartPhysics(float time,bool use)
{
        if (!CharController_pause)
                gCM->updateControllers();

        NxReal deltaTime = UpdateTime();

        if (use == 0)
        {
                gScene->simulate(deltaTime * time);
        }
        else
        {
                gScene->simulate(time);
        }

        gScene->flushStream();
}

void CPhysX::GetPhysicsResults()
{
        while (!gScene->fetchResults(NX_RIGID_BODY_FINISHED, false));
}


Trilliput 12.10.2007 19:31

Re: Проблема с PhysX
 
с дельтой все работет в плане физики, но вот модельки которые должны быть на своих местах - исчезают.

Trilliput 14.10.2007 20:39

Re: Проблема с PhysX
 
Проверьте ктонибудь код из 6-го поста. У меня он жутко тормозит даже в голом виде. Например при использовании только камеры и модели кубика заметны жуууткие тормоза, сама программа завершается при этом 10-20сек.

Render 14.10.2007 23:00

Re: Проблема с PhysX
 
Ты где применяеш РендерФизик? и какие параметры передаёш?
Код из исчезновением тел в студию.
То что прога останавливается это признак демо версии.

Trilliput 15.10.2007 22:44

Re: Проблема с PhysX
 
код с исчезновением в первом посте.

moka 16.10.2007 13:04

Re: Проблема с PhysX
 
Если тормозит код с 6 поста, то значит ты что-то делаешь неправильно. У меня он работет идеально, никаких рывков. Тэстировал и на мощных и на Очень слабых машинах (древние 700 дюроны, с 128 озу, и 32 видео), и никаких рывков и тормозов. Хз что у тебя, ты скорее всего что-то лишнее обовляешь.

Trilliput 17.10.2007 15:19

Re: Проблема с PhysX
 
В том то и дело что к коду из 6-го поста добавил только графику (Grapics3d и тд). Те код вообще ничего лишнего.

H@NON 17.10.2007 15:29

Re: Проблема с PhysX
 
выложи сюда свой весь код, исправим!

Trilliput 17.10.2007 23:29

Re: Проблема с PhysX
 
Вобщем то вот:
Код:

Graphics3D 800,600,32,2
SetBuffer BackBuffer()
ConstFPS=60
period=1000/FPS
time=MilliSecs()-period
Repeat
Repeat
elapsed=MilliSecs()-time
Untilelapsed
ticks
=elapsed/period
tween
#=Float(elapsedModperiod)/Float(period)
Fork=1Toticks
time
=time+period
; Тут логика
IfKeyHit(1) End
UpdateWorld
Next
; Тут рендеры, кубемапы, тени и т.п.
RenderWorld
; Тут 2Д
Flip0
Forever

Блин мистика, сейчас запускаю и все ок. Проц разгружен, памяти не жрет, завершается быстро.:dontknow: Даже не представляю что мог недокопипастить. В прошлый раз при добовлении новых элементов становилось только хуже, простой код с упраляемой камерой и кубиком жрал ресурсов как дум3.
Извеняюсь за бред...

moka 18.10.2007 02:16

Re: Проблема с PhysX
 
Trilliput, наверное не углядел в панеле, 3д макс, автокад, винамп, висул С++, фотошоп, фильмец-другой... :)
Работает говорю же Отлично!

ЛысыЙ_Чук-Иванчук 18.10.2007 09:49

Re: Проблема с PhysX
 
Ну вообще кагда мне МоКа дал этот код, у меня тоже рывки были, ну я его забросил, но нашел прототип в андреевском примере(бамп вроде) тот идельно просто работает, и даже при 10фпс играбельность остоётся.;)
Щяс чуть попозже выдерну из своего проекта, и закину сюды!=)

moka 18.10.2007 11:22

Re: Проблема с PhysX
 
Я же ещё раз повторяют, Там нужно убрать tween за RenderWorld'ом.

ЛысыЙ_Чук-Иванчук 18.10.2007 19:53

Re: Проблема с PhysX
 
в том то и дело, что твеен нужен, и уберать его не обязательно, но в этом случае да.
Блин обесчал и забыл, лана только завтра;)


Часовой пояс GMT +4, время: 17:24.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot