【Blender源代码观察】了解模块的大致依赖关系

目标

我这里所说的 “模块” 对应的是Blender源代码中每一个.vcxproj文件。

在上一篇博客《【Blender源代码观察】了解模块的大致分类》中我简单了解了Blender源代码中模块的分类,本篇的目标是:简单了解模块的依赖关系。

主要参考的资料是:Diagram showing code layout of modules(模块布局图)
(不过此图和当前最新代码的状态有些出入,我想可能有部分省略,或者其中一些细节已经过时。但是大体的框架我相信是差异不大的)

本篇中,我将依照从 “底部” 到 “上层” 的顺序来学习。

0. Operating System(操作系统提供)

在这里插入图片描述
准确来说他们并不属于本篇所讨论的模块

这些是操作系统本身所提供的。

例如:

  • OpenGL图形库
  • 标准C
  • Windows库

1. Pre-compiled Libraries(预编译好的库)

在这里插入图片描述
准确来说他们也并不属于本篇所讨论的模块
这些库没有源代码,不需要编译,直接使用下载好的库文件。

例如:

  • FFmpeg:视频库。A complete, cross-platform solution to record, convert and stream audio and video.
  • fftw3:傅里叶变换库。FFTW is a C subroutine library for computing the discrete Fourier transform (DFT) in one or more dimensions, of arbitrary input size, and of both real and complex data (as well as of even/odd data, i.e. the discrete cosine/sine transforms or DCT/DST).
  • freetype:字体库。FreeType is a freely available software library to render fonts.

2. Utility Libraries from external development(外部开发的通用库)

在这里插入图片描述
这些库并非Blender开发者维护的,而是外部的项目。

当前包含:
在这里插入图片描述

扫描二维码关注公众号,回复: 13130791 查看本文章

3. Utility Libraries in own development(内部开发的通用库)

在这里插入图片描述
也是通用库,不过是Blender开发者自己开发的库。

当前包含:
在这里插入图片描述

4. General Blender APIs(Blender中的通用接口)

在这里插入图片描述
source/blender下大部分都属于这一层级。这些模块之间也相互调用
在这里插入图片描述
而其余的部分则属于更高的层级。

5. Render Engine(渲染引擎)

在这里插入图片描述
包含:
在这里插入图片描述
(图中这一层还有一个gameengine,但是我没找到它)

6. Window Manager(窗口管理者)

在这里插入图片描述
只包含一个模块:
在这里插入图片描述

7. Tools(编辑器工具)

在这里插入图片描述

8. Editor utils(编辑器通用)

在这里插入图片描述

9. 编辑器窗口

在这里插入图片描述
对应于bf_editor_space开头的多个模块:
在这里插入图片描述
他们对应着Blender中的编辑器类型
在这里插入图片描述

10. 应用启动入口

在这里插入图片描述
在这里插入图片描述

总结

最后,我对原图加上了一些自己的标记,做了一个对我自己来说更有助于我了解模块的大致依赖关系的图:
在这里插入图片描述
(图中有些层级的模块我用了原图中的模块,我觉得这对比当前最新的代码应该是有缺失的,但我并不能使用当前最新代码的情况,因为我对其理解不深,并不能分清,例如blender/source/blender/editors 下到底哪些模块属于“编辑器工具”,哪些属于“编辑器通用”?这些待后续理解更深时再更新)

其中,两种箭头符号分别表示:
在这里插入图片描述

后续问题

1. 未提及的模块

当前未提及的模块包含两部分:


其一是CMakePredefinedTargets下的一些模块
在这里插入图片描述
我相信其是为编译所服务的一些内容,不包含实际代码。
待后续确认


其二是不包含与之前博客中分类的其他模块:
在这里插入图片描述
待后续研究其作用

2. 更具体的模块信息

当前的主要参考信息Diagram showing code layout of modules(模块布局图)中模块的数量和现在最新的代码不匹配。要么是省略了部分模块,要么是代码已经更新了较大的幅度。

后续待更细致地了解具体每个模块的信息。

猜你喜欢

转载自blog.csdn.net/u013412391/article/details/113916240
今日推荐