Bubble是一款基于OpenGL的3D图形引擎,主要使用C++编写,采用CMake构建工具构建,基于OpenGL可编程管线,支持GLSL着色器语言。这是一个用于学习和实践的项目,目前尚在开发中。
目录结构
目前项目结构如下图所示:
Bubble/bubble包含引擎的全部源代码和资源,其中:
Bubble/bubble/include为引擎的全部公共头文件;
Bubble/bubble/src为引擎全部源文件;
Bubble/bubble/res包含引擎的所有内置资源,包括材质,纹理,模型,着色器等。
除此之外,`Bubble/samples`还包含引擎的所有示例程序。
基本模块
目前引擎由以下四个模块组成:
- Base:引擎的底层模块,包括窗口管理,资源管理等。其中Windows为窗口类,主要使用第三方库SDL2实现,Engine类负责引擎的初始化和引擎子系统的管理工作,Resources类负责引擎的资源管理。
- Math:引擎的数学模块,实现了向量,矩阵和四元数类以及常用的数学函数。
- Render:引擎的渲染模块,实现了对模型,材质,纹理,着色器,摄像机以及灯光的管理和封装,实现基本的渲染功能,同时对顶点缓冲对象,索引缓冲对象和顶点格式也做了一定的封装。
- Scene:引擎的场景模块,实现基本的场景管理,以及基于组件的对象模型。Node类表示场景中的一个对象,他包含位置,缩放,旋转等空间信息,同时维护一系列Component对象。Component类是所有组件的基类,用于描述对象的行为。Scene类表示场景,他负责组织节点,并维护场景中的灯光和摄像机信息。
这是目前引擎的大致结构,未来可能会加入更多的模块和功能。
项目github地址:https://github.com/EasonWhite0928/Bubble
时间: 2024-12-27 00:14:59