您当前的位置: 首页 >  ar

Jave.Lin

暂无认证

  • 1浏览

    0关注

    704博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

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

Jave.Lin 发布时间:2020-07-10 19:49:46 ,浏览量:1

文章目录
  • Camera RenderLayer - 相机的渲染对象的层级设置
  • GameObject Layer - 游戏对象的层级设置
  • MeshFilter inspector - MeshFilter 可以查看网格的一些信息
  • Material - 使用的材质预览
  • Hierarchy - 层级对象的面板功能
  • Transform - 组件优化
  • 总结
LearnGL - 学习笔记目录

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

上些篇:

  • LearnGL - 09 - Include IMGUI - Dear ImGui - 添加Dashboard、Debugging Panel
  • IMGUI 系统 - Dear ImGUI

了解了 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 Graph、Asset Store(嵌入个 browser 。。。-_-!),还有输入设置、资源打包,不同平台发布,还有脚本调试,网格寻路,这些都是不可能一个人去搞,太多,所以但做学习研究一下就好了。

关注
打赏
1664331872
查看更多评论
立即登录/注册

微信扫码登录

0.0385s