摘要:1. SDK和工程配置的什么的就不多说了,安装完SDK并且把工程模板复制到VC文件夹里,就可以根据模板创建工程了.2.Ogre的导出插件为了学习Ogre的MAX导出,下了最新的Ogre, v1.81大概.对Ogre的导出感到很好奇, 他好像没有直接导出二进制,而是导出了xml,据说有另外的命令行工具把xml转成二进制.还有,Ogre的官方插件, 把所有三角形共享的顶点都重复了一次,也就是说,每个三角形都有自己唯一的顶点,按它文档说明,这是为了处理多维材质时,一个顶点有不同uv和法线,材质等属性的问题, 但是我觉得只需要复制重叠的边缘顶点就可以了,而且即便是重复每个顶点,我记得Ogre的Mesh
阅读全文
摘要:因为之前业余时间太累了,目前主要还是休息,所以现在放慢节奏写点东西.目前已经把3DS MAX的SDK环境搭好, 用它自带的模板创建了solution,已经加到在MAX里面了,引擎的Model插件也着手编写,目前一边熟悉MAX SDK,一边添加Mode插件中模型保存/加载需要的接口.遇到一个问题就是, MAX导出插件也依赖引擎的基础DLL,把导出插件放到$(ADSK_3DSMAX_x86_2013)\plugins 中以后,把引擎的基础DLL放到这个$(ADSK_3DSMAX_x86_2013)\plugins中,MAX加载它会失败,估计是DLL SEARCH PATH问题,把引擎的基础DLL放
阅读全文
摘要:最近最大的工作是添加Atlas多贴图支持,使一个大块地形即可以支持更多的贴图,又可以通过一个Drawcall绘制另外一个工作是地形的保存和加载, 这个虽然很早已经完成,但最近在完善框架的Enitty加载和Stage加载.同时把地形的加载集成到框架里面.Entity和Stage使用同一种加载方式, 并且加入了XML的方式.之前只有Stage的binary方式.现在可以判断格式并选择对应的解析器.(第一行的注释就是标记).基础框架方面主要是添加了编辑器的PropertyGrid,其实用的还是以前的UI,主要是实现了对象的数据绑定.另外一个大的工作是窗口布局的完善: 以前的窗口虽然分了Panel,但
阅读全文
摘要:晚上睡不着觉,很早起来.因为很久没有做业余学习了,发个引擎的依赖层次图,算是自勉吧,有空了坚持搞搞.图是以前做的,不怎么会UML.现在的代码设计结构有了细微的修改,跟图中的不太一样.no more crap, just see the graph belowref:http://software.intel.com/en-us/articles/designing-the-framework-of-a-parallel-game-engine/主要参考了上面的文章来实现的.呵呵.我觉得文章的大思路很不错,不过我实现的细节地方不太一样,特别是游戏对象,和并行状态更新的部分.有空了详细做个笔记,写
阅读全文
摘要:terrain atlas貌似不能使用volme texture
depth decal.
阅读全文
摘要:最近主要的更新:媒体库(MediaLibrary),集成FreeImage地形高度画刷,地形贴图画刷,地形法线计算,天空球,光源以上支持无缝编辑.另外,写了命令行参数解析以及Editor的Splash,纯当作消遣娱乐了,呵呵.关于媒体库:类似UE的Contetn Brower,当然比它要简陋的多了.呵呵.MediaLibrary的窗口可以使用两种方式:模态窗口和非模态窗口.非模态窗口就像UE那中模式,显示的时候不抢占前台,不影响其他操作,而且运行时不需要重复构建窗体,缺点是需要额外的通信,比如拖动项目到目标窗口(UE的模式)模态窗口就相反,好处是do-modal 之后就可以返回选择的结果,避免
阅读全文
摘要:最近主要目标是做地形画刷.但是准备工作太多,只能一步一步来.目前加上了射线查询和地形的三角形集合的相交查询,主要是为了做贴花,这个是画刷显示的时候必须有的东西.关于地形的贴花,可以一直multipass,再画一遍,加上depthbias,使用画刷贴图做纹理投影就可以了,比如Ogre的Ogitor就是这么做的,这样搞对于编辑器没什么问题,足够了.但是对于游戏中使用的贴花来说,最少要一个地形块多渲染一次,感觉太耗了.所以才想用地形三角面查询,只绘制需要的少量三角形就可以了,这对于游戏(而非编辑器)来说更好点.至于射线查询,由于有了空间管理,所以找到与射线相交的三角形和点不难.而三角形集合相交的查询
阅读全文
摘要:最近在做多窗口渲染.说说我遇到的情况首先DX9Device是根据一个窗口(比如D3DPRESENT_PARAMETERS里面的hDeviceWindow)创建的,创建的时候必须制定一个窗口,否则创建失败.但诡异的是,当我关闭了这个窗口之后,渲染设备竟然依然有效(但为什么创建设备的时候非要一个HWND呢,很奇怪,求达人解惑,这个跟DX的Foreground window和焦点有关么?),而且我可以继续创建swapchain,继续多窗口渲染.甚至可以用新窗口,来复用 已经关闭窗口的那个隐式的Swapchian和Backbuffer,就是设备创建的时候带的那个,不过我这时用的是swapchain的p
阅读全文
摘要:法线贴图有两种格式, 可保存在Tangent Space或Object Space.保存在切线空间的好处是渲染对象无论怎么旋转,都可以得到正确的法线信息, 通常的法线也都保存在切空间.它的缺点是, 在渲染时需要进行空间变换,有额外的开销. 比如将法线从切线空间变换到世界空间, 从而根据世界空间的光照...
阅读全文
摘要:一般来说, 定位渲染通道瓶颈的方法就是改变渲染通道每个步骤的工作量, 如果吞吐量也改变了, 那个步骤就是瓶颈. 找到了瓶颈就要想办法消除瓶颈, 可以减少该步骤的工作量, 增加其他步骤的工作量. 一般在光栅化之前的瓶颈称作”transform bound”, 三角形设置处理后的瓶颈称作”fill bound” 定位瓶颈的办法 1. 改变帧缓冲或者渲染目...
阅读全文
摘要:What is the purpose of the D3DCREATE_PUREDEVICE flag?D3DCREATE_PUREDEVICE 标记的作用是什么?Use the D3DCREATE_PUREDEVICE flag during device creation to create a pure device. A pure device does not save the cur...
阅读全文
摘要:为了将UI逻辑和编辑逻辑分离,我考虑一下方法:1.UI使用脚本控制2.抽象接口第一种的话,可能本身实现也比较复杂,没一种UI都要实现脚本支持,可能需要自己写实现.而且,我以前看到的一片老外文章说引擎本身不提供脚本功能.呵呵,可能意思是到了游戏逻辑的时候才考虑脚本,这篇文章可以在GameRes上找到.第二种,关键问题是如何做接口:A 定义成最小接口的单独UI控件B 抽象出编辑器需要的特定功能A方案象...
阅读全文
摘要:目前整个架构基本上完成了,以后的重点放在图形系统(Graphics System)和资源管理器(ResourceManager)上.对于图形系统,准备下一步完善一下材质系统的抽象,并实现一套默认材质方案和渲染方案.底层的渲染设备也需要进一步完善接口,添加渲染状态设置.材质系统的实现,我打算先使用固定管线,shader的抽象还没有做,等以后有时间再做.大致思路:使用XML配置材质脚本,方便的实现材质...
阅读全文