Показать сообщение отдельно
Старый 11.10.2007, 20:22   #18
jimon
 
Сообщений: n/a
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));
}
 
Ответить с цитированием