物理引擎Havok教程(二) Havok基础库简介

物理引擎Havok教程(二)
Havok基础库简介

      Havok的SDK可以说比较复杂,并不是适合用来学习。拿它用来演示效果的Demo程序的框架来说,它的实现实在是非常的神秘,初学者一开始就接触海量的代码,估计会很大的挫伤积极性。所以为了降低大家学习的难度,我在做教程的时候会主要使用实际的代码来介绍SDK的各种特性,代码编写时我会尽量的简洁和通俗一点。示例代码我会整理好,提供链接,供大家下载。觉得好的话,大家要支持啊!

      Havok SDK可以分为三大部分,Havok基础库、Havok物理组件、Havok动画组件。基础库,为Havok的其他组件提供了通用功能的支持,Havok物理组件负责实时的刚体模拟,Havok动画组件负责处理骨骼和角色动画,与物理组件配合,可以实现强大的角色动画控制功能。
      关于Havok SDK的代码习惯,这里要说明一下,Havok SDK所有的类名基本上都以hk*开头,然后后面跟一个字符表示它所属的组件,例如,hkpWorld,说明它属于物理组件(Havok Physics),hkaBone,说明它属于动画组件(Havok Animation),hk后不跟一个表示组件的字符,则表明它是Havok基础库的一部份。

 

Havok基础库
      Havok基础库定义了一些基本的数据类型和容器类,它还包括与平台无关的接口,用于访问操作系统的资源,比如内存管理、时钟等。基础库中的许多类都可以修改或者替换,这样通过提供的源代码,你可以灵活地扩展基础库的功能。不过有些部分,因为编译进了Havok库,所以不能被替换,包括那些有内联函数的容器类,还有config目录下面的构造配置选项(它保存了在编译Havok库时的配置,对它进行任何更改,都需要重新构建整个Havok库)。
      使用基础库,只需要简单的包含hkBase.h即可。hkBase.h内,还定义了一些最基本的数据类型,比如浮点型(hkReal),有符号和无符号整形等等。

 

1. Havok基本系统
1.1 Havok的初始化
      hkBaseSystem类负责创建所有Havok子系统。这些子系统中大部分都是单态类(singleton),各自都有特定的功能,比如内存管理、错误处理、流处理。
 这些类的主要接口是init和quit方法。调用init方法来初始化Havok子系统。

 static hkResult HK_CALL init( hkMemory* memoryManager,
                              hkThreadMemory* threadMemory,
                              hkErrorReportFunction errorReportFunction
                              void* errorReportObject = HK_NULL );

      参数memoryManager,是一个将被Havok在内部使用的内存管理器的实现。这个参数允许你在初始化的过程中指定内存管理器而不必重新构建hkBase。Havok本身提供了许多默认的内存管理器的实现,如果没有特殊要求的话,就可以使用它们。当然,你也可以实现自己的一个内存管理器,Havok推荐使用hkPoolMemory类。这个内存管理器的实现以及其他的可用的实现可以在<hkbase/memory/impl>目录下面找到。
     参数threadMemory,是当前线程的内存管理器,它可以用于优化内存分配和释放的性能。如果你传入了HK_NULL作为参数,默认的,hkBaseSystem::init()会为你创建一个hkThreadMemory实例。
      errorReportFunction和errorReportObject参数被Havok的错误处理器使用,错误处理器主要负责处理断言、错误、警告,或者在引擎内部报告这些事件的发生。默认的错误处理器是<hkBase/hkerror/hkDefaultError.h>,它只是简单的调用errorReportFunction打印错误消息。


 下面举一个使用hkPoolMemory初始化hkBaseSystem的代码示例:

 

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值