【闲话开始】
本来今天想直接把透视变换加进去的,后来发现如果不很好的组织模型Mesh等各个资源数据到项目后期容易看不明白前面自己写的代码了~
所以决定一步一步开始把项目改成一个小小的游戏引擎~
先做个简单的文件系统管理下文件吧。。。不然乱糟糟的对于后期的深入学习directX会很麻烦,总不能每次写不下去了就从DrawTriangle从头来过吧。
很简单的效果如下,大概效果:可以创建xmat文件,双击xmat文件,可以打开对应的材质编辑器。界面没有美化,所以比较丑,不过主要是为了学习DX和图形学。后期如果需要再去用qt样式表做个界面皮肤
【闲话结束】
【正题开始】
参照 虚幻 U nity3d等引擎最开始就是创建工程文件,这样做的好处就是能很方便的管理我们自定义的资源。
参照各大引擎,我规划了下自己目前需要的文件夹架构图。
目前存放一些mesh网格,材质文件等,所以这个简单的架构已经够用了,后期可以慢慢根据需要添加~
我将工程中的各个类名规范化整理了下,目前够用了:
Editor_ 开头是编辑器窗口
Manager_ 是负责管理打开编辑器窗口的管理类,诸如材质编辑器、模型编辑器等都是可以多个窗口同时存在的,那么就由每个Manager来统一负责同类型的Editor管理。
Xctor类似于Unity中的Gameobject用来挂组件的,上面有组件列表
XCom类为组件类,用来实现各个独特功能的组件
目前我先做了一小部分
这里为了方便简单,在搭建过程中使用QFIleSystemModel来简单的做一个文件管理系统。后期如果需要强力自定义功能的话要考虑重写为自定义的Model,Qt的模型视图原理CSDN转载了下教程帖子如下:
CSDN-专业IT技术社区-登录blog.csdn.net。故此单独搞个ContentModel类,方便以后重写
这边有个坑就是QFileSystemModel在赋值根路径的时候需要在ListView里重新指定下Index
不然刷新不出来
单独SetRootPath无法使得QFileSystemModel正常工作,需要把ListView传进来刷新下index
接下来双击文件打开Material编辑器的效果,我自定义了一个ListView,然后重载鼠标双击事件,当鼠标双击时获取所有选中文件的路径,然后根据后缀名*.xmat打开MaterialEditor,这个方法比较暴力,em,不过目前我想要简单直观粗暴。
哈哈,打开编辑器还是用if判断字符串打开的。目前比较直观,后期要想想有什么更简便的方法能做到这个效果。
结束。下面可能需要搞个MeshEditor,先把模型数据规划好了,再继续DX的Shader开发
未完待续。。。
【正题结束】