PhysX学习记录 三

本文深入探讨了NVIDIA PhysX SDK的内部细节,包括自定义内存分配、对象实例化、时间间隔管理和VRD坐标颜色等关键概念。详细解释了如何配置内存分配类以实现自定义内存管理,以及SDK实例化对象的方法和注意事项。同时,阐述了模拟时间与步长的关系,以及如何调整以获得最佳性能。此外,文章还特别关注了VRD坐标颜色的设置与理解。
摘要由CSDN通过智能技术生成

原文地址:http://blog.csdn.net/heartrude/article/details/7768490


写完第一个Demo,心里有了一个直观的感受。现在需要通过阅读来深入了解一些内部细节了。


1.对于NxCreatePhysicsSDK函数

a.PhysX支持玩家自定义的内存分配方式。

只要在NxCreatePhysicsSDK函数的第二个参数里面传入内存分配类指针即可。
[cpp]  view plain copy
  1.    class MyAllocator : public NxUserAllocator      
  2. {     
  3. public:  
  4.     void * malloc(NxU32 size)          
  5.     {             
  6.         return ::malloc(size);  
  7.     }          
  8.     void * mallocDEBUG(NxU32 size,const char *fileName, int line)          
  9.     {              
  10.         return ::_malloc_dbg(size,_NORMAL_BLOCK, fileName, line);          
  11.     }          
  12.     void * realloc(void * memory, NxU32 size)          
  13.     {   
  14.         return ::realloc(memory,size);         
  15.     }  
  16.     void free(void * memory)        
  17.     {  
  18.         ::free(memory);        
  19.     }   
  20. }  
  21. myAllocator;    gPhysicsSDK = NxCreatePhysicsSDK(NX_PHYSICS_SDK_VERSION, &myAllocator, 0);  

b.创建和释放必须配对

NxCreatePhysicsSDK函数返回的是一个单键对象指针。所以一个进程,多次调用NxCreatePhysicsSDK返回的是同一个对象。一个进程只能由一个SDK实例对象。该实例是包含引用计算的单键。所以要求每次NxCreatePhysicsSDK调用,都要有配对的gPhysicsSDK->release();

2.实例化对象

很多SDK对象接口都包含了Create方法。可以返回实例化对象指针。很多对象对不能直接new出来。因为本身是虚函数。然后对应的释放都调用对应的release函数。
对象包含userData成员。可以用来记录对象相应数据内存指针。

3.有关时间间隔

这里主要是两个时间。一个是模拟时间,一个是模拟步长。
在NxScene->simulate函数传入参数elapsedTime是模拟时间。每一次simulate模拟的时间。
NxScene->setTiming(maxTimestep, maxIter, method)。
maxTimeStep该参数在传入的method是NX_TIMESTEP_FIXED的时候表示每次simulate模拟的最大时间步长。如果elapsedTime > maxTimeStep,则simulate会把时间分成多个maxTimeStep来执行。最多执行maxIter次。如果maxIter次还没有达到elapsedTime 时间。则剩余的时间累计到下一次simulate调用时计算。maxTimeStep一般是1/100到1/50s比较好。
如果method是NX_TIMESTEP_VARIABLE则simulate把elapsedTime作为单步时间来模拟。

4.有关VRD的坐标颜色

VRD显示的坐标系只有红色、绿色、蓝色三种不同颜色坐标轴。没有坐标轴的X,Y,Z标志的。
据观察测试 红色:X 绿色:Y 蓝色:Z

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值