LearnGL -10 - 添加各种封装便于后续管理、添加Hierarchy、Inspector 面板

4 篇文章 0 订阅


LearnGL - 学习笔记目录

本人才疏学浅,如有什么错误,望不吝指出。

上些篇:

了解了 Dear ImGui 可以制作 GUI,使用也足够方便,强烈推荐使用。

这一篇:我们再添加一些后续方便编译、测试用的面板:Hierarchy、Inspector,顺便学习一下 C++。


目前的界面长这样:

在这里插入图片描述


看看一些效果

Camera RenderLayer - 相机的渲染对象的层级设置

为了方便演示,本身相机默认值为:Default 层级,我设置为 Everything 层级了
在这里插入图片描述
在这里插入图片描述

GameObject Layer - 游戏对象的层级设置

选中 Hierarchy Panel 中的 MyCube0,在 Inspector Panel 中设置它的 Layer 层级,层级设置为 Nothing。

因为相机渲染层级 RenderLayer 不包含该层级,所以可以看到没有渲染该 Cube。
在这里插入图片描述

MeshFilter inspector - MeshFilter 可以查看网格的一些信息

目前还不能在 Inspector Panel 中预览网格(后面等熟悉 OpenGL 后可以添加),大概思路是 RT( RenderTexture),渲染到纹理,再将RenderTexture 设置到 Dear ImGui 的图片显示,再加上对该图片组件添加鼠标旋转,缩放,方便查看网格。

在这里插入图片描述

Material - 使用的材质预览

目前主要显示:

  • Shader 使用的 Shader 名字,后续如果有文件名可以显示,如果直接加载脚本的则不显示文件名
  • 还有 Shader 中的 attribute 有哪些
  • 还有 Shader 中的 uniform 用到的贴图
  • 还有用到的纹理的相关内部,外部格式信息、Wrap、Filter 等
    在这里插入图片描述

Hierarchy - 层级对象的面板功能

目前只有列表项,还有顶部有一些可以过滤显示哪些 Layer 层级的 GameObject,后续添加一个文本输入框,增加模糊搜索功能
在这里插入图片描述

Transform - 组件优化

与 Unity 的显示类似,显示:Position, Scale, Rotation 信息,目前我这三个值是相对局部坐标设置的,后续可以添加选项处理是:相对局部坐标,还是世界坐标来设置

操作方式与 Unity 的很类似,就是激活工作区时 + 鼠标右键时 + WSAD 可以使用视角的移动
在这里插入图片描述


不知不觉,include 下的文件越来越多了,处于学习便利性,我直接放在了 include 目录底下

在这里插入图片描述

代码量的纯文本一下添加了上100 K+。

  • my_array.h 一些定长数组的封装
  • my_gameobject_etc.h 封账了: Layer, GameObject, Component, Transform,因为有一些相互引用,所以放一起方便处理
  • my_game_mgr.h 游戏 GameObject 的管理。
  • my_get_str_hash.h 获取字符串的哈希
  • my_macros_switcher.h 宏定义开关、数值总入口
  • my_mesh.h 网格 Mesh 的封装
  • my_object.h 所有我的封装类的基类,便于同一实例数,与销毁
  • my_ref_count_mgr.h 部分资源的统计引用自动销毁
  • my_simple_load_tex.h 简单的纹理加载
  • my_texture.h 纹理对象封装
  • my_time.h 时间相关管理类
  • print_gl_version_info.h 打印 GL 版本信息
  • shader.h 最早封装的 ShaderProgram 类,材质会使用到

在这里插入图片描述

  • my_comp_material.h 材质管理类 Material
  • my_comp_meshfilter.h 网格过滤类 MeshFilter
  • my_comp_meshrenderer.h 网格渲染类 MeshRenderer

在这里插入图片描述

  • my_demo_camera_controller.h 就是之前的镜头类 Camera,稍微完善了一些
  • my_demo_comp_cube.h 演示用的 Cube 组件脚本
  • my_demo_comp_script_holder.h 演示用的,控制多个 Cube 组件附加对象 GameObject 的脚本

在这里插入图片描述

  • my_texture_import.h 纹理导入相关参数配置类

后续有空再 3D 视图(游戏视图)层的 Gizmo 绘制


总结

如果说有时间的话,继续学习,进修肯定弄做一个简单一些的 3D 引擎(玩具)。

但是如果要想与目前市面上成熟的引擎相比,是没法比,我这个是学习用的作品(玩具),别人的是产品,是一个团队生成的,没法比。

特别是资源优化管理非常需要时间去维护,还有一些插件功能等,脚本语言等(目前我连C++都不熟悉,类型 meta 信息的反射都暂时没时间去搞),还有类似 Unity 的各种编辑器Shader GraphAsset Store(嵌入个 browser 。。。-_-!),还有输入设置资源打包,不同平台发布,还有脚本调试网格寻路,这些都是不可能一个人去搞,太多,所以但做学习研究一下就好了。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值