欢迎光临散文网 会员登陆 & 注册

Blender源码结构层级记录

2023-07-26 11:06 作者:抓住小猪  | 我要投稿

首先一上来当然是官方的源码结构说明:https://wiki.blender.org/wiki/Source/File_Structure

我之前看的时候还是2.83版本,以下以2.83为例。

源码层级结构


在整个源码的结构中,我们最关心的,只有三个文件夹。分别是 extern、intern、source。其他其实不用关心。

首先先介绍我们不怎么关心的几个文件夹里面主要的内容。

暂时不关心的源码目录

build_files

是为了编译而准备的一些脚本命令,包括项目是否最新、编译配置等,暂时不关心。

doc

用于生成当前版本blender文档相关的工具(包括c++文档、python API文档),以及一些blender内数据结构的说明。blender使用doxygen生成c++文档,使用sphinx生成python文档。

release

预先准备的资源,比如内置的插件、主题等,在编完之后其中的部分资源直接拷贝到编译完的项目中。

tests

顾名思义,blender的所有单元测试都在这个目录下。


着重关心的源码

上面这一些项目可以先不关心,它们对我们理解、分析blender源码没有什么影响。

下面看blender源码中最重要的三个部分: extern、intern、source 。

在这三个部分中,简单介绍一下分别是干嘛的。

extern

blender依赖的第三方库的官方版本,blender只使用,不维护。其中目前涉及到24个外部项目,主要是一些音频库、图形算法库、图形渲染库、常用数据结构库、单元测试库以及其他一些必要的库。

intern

blender使用的一些内部的库(一部分是对第三方库的魔改版本),由blender自己维护代码;目测这个部分的代码,是第二重要的代码;

source

blender自己的核心代码,虽然intern也是核心代码,但是intern内的代码大部分还是外部的开源库的。而这部分代码是完全的blender自己搭建,平地起高楼,目测是最重要的代码。而在其中,还分成三个部分: blender、creator、tools 

source\blender

blender特有的一些代码,其中包含了非常多的、最核心的blender实现,也是理解源码最重要的部分;关于这个部分的介绍,下面一个章节会详细介绍。


source\creator

作者说之后会移动到 blender\source\blender 中,这部分代码实际是blender的主入口代码,在这个模块中,通过对blender\source\blender 中基础接口的调用,做了子模块的配置、入参解析以及各种事件循环的调用。


source\tools

tools 下面是一个独立的git仓库(https://wiki.blender.org/wiki/Tools/Blender_Tools_Repo)

如果要理解整个结构,这部分代码其实也不用太关心。包含内容为构建 Blender 不需要但开发人员可能会发现有用的工具,包括:

1.  用于对代码进行样式、拼写检查的实用脚本。

2.  用于代码库分析的实用脚本,例如创建信用。

3.  第三方应用程序、IDE 的配置。

4.  比如对于删除代码中的一些尾随空格以及BOM,使用python3 source/tools/utils_maintenance/trailing_space_clean.py 

比如对于要检查一个blend文件中的DNA结构,使用

source/tools/utils/blend2json.py

具体的使用方式就不记录了,有需要使用工具了去找一圈就行。下面粗略记录工作的类型,个人觉得最主要的只有代码规范和源码检查类。


代码规范与其他类

主要在 source/tools/utils/  以及 source/tools/utils_maintenance/  中,涉及到包括代码整理、代码规范等等python脚本

源码检查类

主要位于source/tools/check_source/

用于检查代码拼写,是否有没有使用的定义,头文件重复等等

可执行项目检查类

主要位于source/tools/check_blender_release/

检查版本,查看模块等

编译配置类

主要位于source/tools/utils_ide/ 和 source/tools/utils_build/ 

其中提供了QtCreator的项目配置,以及cmake编译选项;

文档类

主要位于source/tools/utils_doc/


所以到这边为止,对blender源码的结构至少有一个大概的感觉了。

blender自己的核心实现在 source/blender 中。




Blender源码结构层级记录的评论 (共 条)

分享到微博请遵守国家法律