自制游戏引擎

这是一个玩具

1. 引擎使用流程

在这里插入图片描述

  • SmallEngine是引擎的核心模块,封装渲染功能和场景管理功能等
  • Editor是编辑器,类似unity和ue编辑器,能够动态添加对象和组件
  • Sandbox是游戏播放器,能够运行游戏

2. SmallEngine

在这里插入图片描述
参考 https://www.bilibili.com/video/BV1KE41117BD/?spm_id_from=333.788.recommend_more_video.0&vd_source=be4b42409fb0d5ad1e1bd5a5715b7da0

引擎采用glfw做窗口管理,ImGui做窗口控件,assimp解析3d模型文件,bullet做物理引擎,entt做ECS组件系统,freetype2解析ttf字体

在这里插入图片描述

  • CMakeLists控制是哪个平台编译
    在这里插入图片描述
    Core里是跟平台无关的代码

在这里插入图片描述
Events里是窗口事件,鼠标,按键等

在这里插入图片描述
ImGui封装了ImGui使用的layer层
在这里插入图片描述

Platform存放了具体的渲染方式opengl和pc 的窗口windows,便于平台化

在这里插入图片描述
Renderer里放渲染相关,跨平台,Renderer3D负责3D场景渲染,Renderer2D负责2D场景渲染
在这里插入图片描述
Scene里有场景管理,实体管理,模型网格动画,脚本等
SmallEngine.h便于Editor和Sandbox访问

3. Editor

在这里插入图片描述
Sandbox里主要是用ImGui绘制了窗口控件,Menu菜单,Project,Property
支持保存,加载工程,增加删除节点,增加删除组件
在这里插入图片描述

4. Sandbox

在这里插入图片描述
Sandbox和Editor类似,区别在于,没有多余的界面窗口,从xml中加载场景后,加载脚本,显示游戏画面
在这里插入图片描述

5. 演示

5.1 脚本演示

box5挂载移动脚本,box6挂载旋转脚本
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

请添加图片描述

5.2 动画演示

在这里插入图片描述
骨骼动画支持添加删除多个动作,可以调整动画速率和不同动作之前切换时间,方便动作过渡
在这里插入图片描述

请添加图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/2100.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于PyQt5的图形化界面开发——天气应用

目录 0. 前言1. 注册心知天气2. 代码实现3. 其他PyQt5文章 0. 前言 本节使用PyQt5开发天气应用程序实现以下功能: 通过调用天气API获取实时天气数据,并在应用程序中显示当前城市的温度、天气状况、风速等信息。 操作系统:Windows10 专业版…

ps htop 输出可读文件

需要安装sudo apt-get install aha echo q | ps auxf | aha --black --line-fix > psps.html echo q | htop | aha --black --line-fix > htop.html 使用浏览器打开

MYSQL 数据清理磁盘没变小问题解决方法

我们到数据目录查看有些表比较大,清理了一些无用数据后发现,文件大小不变。这是mysql的机制导致的。 解决方法:重建索引释放空间。 alter table $TABLE engineInnoDB;

代码随想录算法训练营第五十二天|300.最长递增子序列、 674. 最长连续递增序列、 718. 最长重复子数组

最长递增子序列 dp[i]的定义dp[i]表示i之前包括i的以nums[i]结尾的最长递增子序列的长度状态转移方程 位置i的最长升序子序列等于j从0到i-1各个位置的最长升序子序列 1 的最大值。 所以:if (nums[i] > nums[j]) dp[i] max(dp[i], dp[j] 1);dp[i]的初始化 每一…

DETR系列:RT-DETR(一) 论文解析

论文:《DETRs Beat YOLOs on Real-time Object Detection》 2023.4 DETRs Beat YOLOs on Real-time Object Detection:https://arxiv.org/pdf/2304.08069.pdf 源码地址:https://github.com/PaddlePaddle/PaddleDetection/tree/develop/conf…

项目——学生信息管理系统7

目录 学生选课功能的介绍 把 课程的数据库表创建出来 创建实体类 创建添加课程页面 AddCourseFrm,注意创建成JInternalFrame类型 页面制作,具体参照之前的 回到 MainFrm 添加课程管理菜单项 给添加课程按钮绑定事件 回到AddCourseFrm 页面 1. 把…

Solid Converter PDF v10 安装及使用教程

目录 一、软件介绍二、下载教程三、安装教程四、使用教程1.PDF转Word、Html等2.合并PDF文件 一、软件介绍 Solid Converter PDF是一套专门将PDF文件转换成Word的软件。 能够将PDF转换为Word、Excel、HTML、PowerPoint、纯文本文件从PDF文档中提取数据并以CSV等格式保存能够转…

CENTOS上的网络安全工具(二十四)Windows下的Hadoop+Spark编程环境构建

前面我们搭建了hadoop集群,spark集群,也利用容器构建了spark的编程环境。但是一般来说,就并行计算程序的开发,一刚开始一般是在单机上的,比如hadoop的single node。但是老师弄个容器或虚拟机用vscode远程访问式开发&am…

Android13 安装最新版 Frida

本文所有教程及源码、软件仅为技术研究。不涉及计算机信息系统功能的删除、修改、增加、干扰,更不会影响计算机信息系统的正常运行。不得将代码用于非法用途,如侵立删! Android13 安装最新版 Frida 环境 win10Pixel4Android13Python3.9Frida1…

POI合并单元格设置单元格样式

文章目录 设置居中设置背景颜色设置边框设置字体合并单元格实际使用运行效果 设置居中 CellStyle centerStyle wb.createCellStyle();centerStyle.setAlignment(HorizontalAlignment.CENTER); // 居中centerStyle.setVerticalAlignment(VerticalAlignment.CENTER);//垂直居中设…

CV什么时候能迎来ChatGPT时刻?

卷友们好,我是rumor。 最近看了几篇CV的工作,肉眼就感受到了CVer们对于大一统模型的“焦虑”。 这份焦虑让他们开始尝试统一一切,比如: 统一复杂的自动驾驶任务的优化目标[1],来自今年CVPR最佳论文。统一典型的CV任务&…

机器学习——深度学习

1 感知机 y f ( ∑ i 1 n w i x i − b ) yf(\sum\limits_{i1}^{n}w_ix_i-b) yf(i1∑n​wi​xi​−b) 其中, f f f 常常取阶跃函数或 Sigmoid 函数。 学习规则: Δ w i η ( y − y ^ ) x i w i ← w i Δ w i \Delta w_i\eta(y-\hat{y})x_i\\ w_i…