Bubble三维图形引擎简介

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

Bubble三维图形引擎简介的相关文章

《三维建模简介》课件

对课件简单整理了下,每一次课后加了几个复习题,便于大家回顾复习.整理后的课件下载地址: 1. CSDN网站: http://download.csdn.net/detail/wpxu08/9722181 2.百度云链接:http://pan.baidu.com/s/1miuehJU 密码:qbo0

虚拟地球原理与实现

一.引言 目前与地理信息相关的信息绝大多数也是通过投影变换以平面的方式管理和使用,这已不能满足大范围甚至全球多分辨率海量数据管理的要求. 2005年,美国谷歌公司推出了一款免费的虚拟地球浏览软件GoogleEarth(谷歌地球),给了人们一种全新的感受,数据动态装载.地形渐进描绘.多重细节层次(LOD: Levels of Detail)和虚拟现实表现等已成为虚拟地球的典型技术特征. 因而构建一个虚拟地球,需要解决以下几个问题:全球角度空间数据模型的构造,海量地理空间数据(包括地形.影像)的组织

【Unity】3.3 用3ds Max 2015制作模型并将其导入到Unity

分类:Unity.C#.VS2015 创建日期:2016-04-05 一.常用三维软件简介 由于游戏引擎本身的建模功能相对较弱,无论是专业性还是自由度都无法同专业的三维软件相比,所以大多数游戏中的模型.动画等资源都是通过专业的三维软件来制作的,制作完成后再将其导入到Unity中使用就行了. Unity支持几乎所有主流的三维文件格式,例如.FBX..dae.3Ds..dxf..obj等.其中,最常用的三维建模软件有:3Ds Max.Blender.Maya.--等. 用户在3Ds Max.Blen

一个游戏程序员的学习资料

三维图形学: 搞三维图形学首先还是要扎扎实实的先看解析几何.线性代数.计算几何的教材,后面的习题一个都不能少.国内数学书还是蛮好的.苏步青大师的<计算几何>称得上具有世界级水准,可惜中国CAD的宏图被盗版给击垮了.现在是我们接过接力棒的时候了.It’s time! <Computer Graphics Geometrical Tools> <计算机图形学几何工具算法详解>算法很多,纰漏处也不少. <3D Math Primer for Graphics and G

Cocos2d-x 3.0final 终结者系列教程04-引擎架构分析

从前有个跟我学Android的学生,老是问我: 沈老师,为什么Android中的窗口叫Activity,为什么要在onCreate方法中写setContentView(R.layout.main)? 我说: 你能不能按照我教你的实现一个窗口 第一步在AndroidManifest.xml中添加一个Activity标签 第二步写一个类继承Activity并覆盖onCreate方法 他说: 我想知道为什么要实现Activity和onCreate方法,之后我才能完成这个练习. 我说: 你实现了Acti

数字地球实现

GoogleEarth的出现给了人们全新的感受,数据动态装载.地形渐进描绘.多重细节层次(LOD: Levels of Detail)和虚拟现实表现等已成为虚拟地球的典型技术特征.构建数字地球有这么几个问题: 全球角度空间数据模型的构造: 海量地理空间数据(地形.影像等)的组织.管理和调度: 空间数据的三维可视化. 全球角度的空间数据模型 投影理论解决了球面或椭球面不可展的难题(尽管不完美),从而建立了二维平面与实际球面三维空间的对应关系,球面网格理论则构建了全球空间数据高效访问的应用分析模型.

图形世界分裂的两派——理清Direct3D和OpenGL的脉络

计算机三维图形是指将用数据描述的三维空间通过计算转换成二维图像并显示或打印出来的技术,API(Application Programming Interface)即"应用程序接口"是连接应用程序与操作系统.实现对计算机硬件控制的纽带,Direct3D和OpenGL是目前的两大3D图形 API,要在你的3D显卡上进行3D特效的制作.实现都必须通过它们(Vooodoo迷们肯定对Glide接口记忆尤深,可惜已随着3dfx的倒闭而作古,其它还有Heidi等接口).关于D3D和OpenGL的理论

3DSMAX 中的CS 骨骼动画插件初探

王玉培 郑利平1 合肥工业大学计算机与信息学院VCC 研究室, 合肥 230009 摘要:首先介绍了3DSMAX 中的CS 骨骼动画制作方法,通过Biped 骨架可以快速方便的制 作两足动物的动画.并介绍了基于3DSMAX SDK 的插件开发,SDK 中类库的组织方式和3DSMAX 的场景组织,最后介绍了和3D引擎密切相关的骨骼动画导出插件的开发过程. 关键词:骨骼动画 插件开发 Biped Preliminary Study on the CS Skeletal Animation Plug-

Bubble Babble Binary Data Encoding的简介以及bubblepy的安装使用方法

Bubble Babble Binary Data Encoding是由Antti Huima创建的一种编码方法,可以把二进制信息表示为由交替的元音和辅音组成的伪词(pseudo-words),主要用于密码指纹,其编码也具有内置的纠错和冗余.编码格式每5个字符中间以-来分隔,作者的原意就是想把难以记得的二进制数据表示为难忘的伪词. --------------------------------------------------------------------- 1. 安装 打开https