Skip to content
[zh]6月底,又到了KlayGE的发布时间,KlayGE 4.9正式发布了!相比于以前的开发周期,这次我由于工作超忙,花在KlayGE上的时间和开发进度的控制较少,有些预计的功能并没有按时完成,只能延期到下个版本。同时,越来越多的朋友开始提供宝贵的建议和bug报告,在此表示感谢。由于开发设备的限 制,难免有一些测试不足的情况,尽请见谅。KlayGE 4.9的主要更新如下:[/zh] [en]The end of June, is a KlayGE release date, again. In this development cycle, I don't have that much time spend on KlayGE and progress control. Some planned features have to deferred to next release. Meanwhile, more and more users provide great sugges ...
最近工作太忙,放在KlayGE上的时间不如以前多了。最近有些新工具上线,这里介绍一下。 编辑器 大家期盼已久的编辑器终于有个雏形了,名叫KGEditor。 WPF/C#的外壳,接入KlayGE的核心,可以双向调用。目前实现的功能很简单,只能编辑静态场景。在未来的版本中需要着重发展这个编辑器,也希望有经验的朋友们可以提供帮助。 纹理查看工具 KlayGE的纹理用的DDS格式。但原先DX SDK的纹理查看工具不支持DX10的扩展格式,VS2015的又缺乏一些功能,比如不能调节整体亮度。而且由于我对DDS格式做了略微的扩展,可以放入ETC压缩的纹理,这都要求有一个自己的纹理查看工具,方便开发中使用。 该工具可以方便地打开/关闭某个通道,查看 ...
KlayGE 4.9的开发已经开始。作为第一步,把工程系统整理好,会让新版本的开发和使用更为顺利。所以从几个版本前开始,工程系统的改进总是先行一步。目前这一步已经完成,在这里写个帖子总结一下。 继续停止支持老编译器 不再支持vc110(VS2012)和gcc 4.6-4.7。这样可以去掉很多为了这些老编译器特别写的workaround,提高代码质量。由于剩下支持的编译器都有很好的C++11兼容性,现在可以用绝大部分C++11特性了。C++14也可以适度使用。 合并到同一个solution 很久以前就想这么做。这样对代码搜索和构建都方便。但以前的Visual Studio并不能支撑同一个sln里有那么多项目,经常出现性能严重下降或者崩溃的情况。而现在情况好了很多,终于可 ...
按照惯例,KlayGE 4.8发布之后,新版本的开发也会立刻开始。这里公布一些我对KlayGE 4.9的计划,更开发组成员和用户参考。这些其实大部分在4.8发布之前就已经计划好。和以前一样,欢迎有兴趣、有时间加入KlayGE 4.9开发阵营的朋友们继续参加。由于打算用到assimp和glsl-optimizer,也希望在这方面有经验的朋友能给予帮助。 时间线 这里列出几个重要的时间点,以供进度参考。 2016年5月31日,feature complete:所有功能都已经完成,没完成的推迟到下一个版本。 2016年6月15日,code complete:完成所有代码,除非特殊情况,否则不能在改变接口。 2016年6月30日,release:正式发布KlayGE 4.9。 必然出现 这些特性一定会出现在K ...
[zh] 大家圣诞节和新年快乐。又到了6个月一次的KlayGE发布时间,今天KlayGE 4.8正式发布了!在这个版本的开发中,有一些功能是由团队成员完成的,同时也有很多朋友提供了宝贵的建议和bug报告,在此表示感谢。由于开发设备的限制,难免有一些测试不足的情况,尽请见谅。KlayGE 4.8的主要更新如下: 引擎方面的改进 D3D12插件。 异步资源创建,简化资源载入的代码。 增加CPU和GPU的同步原语支持,支持手动同步管理。 在OpenGL/OpenGLES里支持texture array。 加速反射的渲染。 SIMD数学库,把现有的数学库扩展成支持SIMD的实现。(由刘智超和倪成丹完成) 重构了shader编译的工作流。(由钱康来协助完成) 增加了使用音 ...
Win10 TH2 (10586)正式版已于11月12日发布,其SDK也在11月30日随着VS2015 Update 1正式发布。本来不觉得D3D/DXGI部分会有什么变化,毕竟没有任何正式宣布。但SDK里俨然出现了d3d11_4.h和dxgi1_5.h。换句话说,D3D 11.4和DXGI 1.5就这么悄悄发布了。 但是,到目前为止,不管是msdn还是网上搜索,都找不到没有任何资料。从头文件的内容来看,其实与其说是一个新版本,不如说是对以前的略微增强。下面我们就来看看到底变了什么。 D3D 11.4 d3d11_4.h里面,唯一增加的是定义了ID3D11Device4,包含两个新函数。 HRESULT RegisterDeviceRemovedEvent(HANDLE hEvent,  DWORD *pdwCookie); void UnregisterDeviceRemoved(DWORD dwCookie); 从 ...
去年,KlayGE就已经有了Windows Store的版本和Windows Phone的版本。随着Win10的推出,UWP成了统一两者的平台。CMake 3.4加入了UWP的支持之后,KlayGE也很顺利地增加了UWP的支持。 UWP的用法 在CMake 3.4中用UWP非常简单,和原先用Windows Store的完全一样,只是系统版本号改成10,仅此而已(-DCMAKE_SYSTEM_NAME=WindowsStore -DCMAKE_SYSTEM_VERSION=10.0)。所以代码其实都没改,只需要增加一个UWP的manifest。为了方便起见,在代码和CMake里定义了KLAYGE_PLATFORM_WINDOWS_UWP,用来表明是UWP的build。 另一个细节需要注意,在UWP应用里,小图标的大小是44x44,而不是30x30。 ARM的桌面 UWP讲究一份代码各种架构。但在编译ARM ...
自从Win8引入WinRT以来,主流开发者的说法一直是,C++/CX可以方便地把现有C++代码移植到WinRT。一般来说确实如此,绝大部分原有C++代码可以的保留,只需要写UI的部分就可以了。但因为C++/CX的引入,还是会带来一些副作用,不完全都是好处。本篇将以KlayGE为例,讲解如何在不用C++/CX的情况下完成WinRT应用(包括UWP)。 C++/CX的功与过 C++/CX使用起来挺方便,语法和原先的C++/CLR极其相似,但是native的,没有虚拟机执行开销。任何懂C++的人都可以很快上手,把程序移植到WinRT。同时,WinRT背后一大套COM机制都被隐藏掉了,可以直接用普通的类一样使用COM对象。 但是,仔细观察就能发现,在C++项目中加入C++/CX有几个缺点。 C++/CX ...
本系列前面的五篇已经让引擎可以在D3D12下跑通所有的例子。但这并不代表功能已经齐全。其中很多例子能跑通的原因,是因为例子本身有fall back的代码,允许在没有各种高级功能的情况下运行。Compute shader就是其中的一个。本篇将会讲解如何加入compute shader,以及在此过程中遇到的一个大坑。 计算引擎 和以前的API不同的是,D3D12是个多引擎的API,可以让硬件的不同的独立部分异步执行,以提高效率。D3D12里的引擎有,渲染引擎、计算引擎和拷贝引擎。这三个引擎有不同的指令队列,可以在程序的控制下并行执行和互相同步。所以,在D3D12里,推荐的做法是,渲染和计算分开,放到不同引擎执行。所以虽然compute shader也可以在渲染引擎执行 ...
Universal DX SDK的第二阶段也完成了。新加了一个批处理文件,用于从系统的.dll生成.lib或者.a。 这个脚本支持vc7-vc14,以及mingw。只要装了这些中的任意一个,执行脚本的时候,它就会从System32或SysWOW64中挑选需要的dll,从中生成vc所有用的导入库lib,或者mingw所用的导入库.a,放到Lib下。如此一来,非动态载入的情况也可以使用Universal DX SDK。 目前我的实验是,在KlayGE里用Universal DX SDK,在VS2013下开发D3D12的东西,包括桌面应用和WinRT应用。目前为止一切正常,程序可以编译链接运行。