世界对象是 RenderWare 场景的核心
enderWare 世界(World)模块的 API 声明,主要提供了操作场景世界(RpWorld
)、扇区(RpWorldSector
)、以及全局/局部光源、材质、模型等的接口。下面帮你梳理它的用途和结构:
1️⃣ C++ 兼容宏
-
RenderWare 是 C 语言库,用
extern "C"
保证在 C++ 下链接不会被 name mangling。 -
所有函数都是 C 风格导出。
2️⃣ 世界注册/管理
-
worldTKList
:RenderWare 内部维护的世界对象注册表。 -
_rpWorldRegisterWorld
/_rpWorldUnregisterWorld
:把RpWorld
对象加入或移出全局管理列表,用于内存管理和插件支持。
3️⃣ 辅助函数(内部 API,_rp 开头)
-
_rpWorldFindBBox
:计算世界的包围盒(BoundingBox)。 -
_rpWorldSetupSectorBoundingBoxes
:为每个扇区生成 BSP 包围盒(用于空间分割)。 -
_rpWorldSectorDeinstanceAll
/_rpWorldSectorDestroyRecurse
:扇区资源释放,递归销毁。
4️⃣ 光源枚举
-
遍历世界中的光源,支持全局光和局部光回调处理。
5️⃣ 世界几何访问
-
锁定/解锁世界对象,保证多线程访问时数据安全(通常用于编辑几何数据或批量修改)。
6️⃣ 世界对象操作
-
创建/销毁
RpWorld
对象。 -
RpWorldInstance
:实例化世界,准备渲染或处理。
7️⃣ 枚举场景对象
-
提供枚举函数,遍历世界中 模型(Clump)、材质、光源、扇区。
-
通过回调函数处理每个对象。
8️⃣ 渲染与回调
-
RpWorldRender
:渲染整个世界。 -
RpWorldSetSectorRenderCallBack
:设置每个扇区渲染回调(可以自定义渲染逻辑)。
9️⃣ 插件系统
-
RenderWare 世界对象可以挂载插件(比如 LOD、碰撞、材质扩展等)。
-
RpWorldPluginAttach
:挂接世界插件的入口。 -
RpWorldRegisterPlugin
/RpWorldRegisterPluginStream
:注册插件数据结构和序列化接口。
🔑 总结
-
_rpWorldXXX
:内部 API(stealth-API),一般 RenderWare 内部或插件使用。 -
RpWorldXXX
:公开 API,给用户创建、销毁、渲染、遍历世界对象。 -
世界对象是 RenderWare 场景的核心,几乎所有渲染和动画操作都依赖它。
-
挂载插件(
RpWorldPluginAttach
)必须在创建世界之前调用。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/930999.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!