每一次KlayGE新版本的开发初始,都会花一定的时间改进工程系统,会让新版本的开发和使用更为顺利。目前这一步已经基本完成,在这里写个帖子总结一下。
支持NDK r12
对NDK的支持升级到了新的r12。这里包括把android-cmake更新到最新代码,并可以用clang来把KlayGE编译成android版。因为NDK在慢慢去掉对gcc的支持,gcc的版本停留在了4.9。所以以后也将不再支持用gcc编译KlayGE的android版,转向clang。
用clang的好处之一是,链接速度快了无数倍。
GCC 5.1+
对于其他平台,仍然可以使用gcc编译。但现在要求gcc 5.1以上。这么做省去了很多为了老版本的gcc而作的兼容,尤其是C++11/14的部分。降低了维护开销。这么一来,gcc和clang下,都 ...
上个星期,KlayGE 4.9刚刚发布。几乎与此同时,新版本的开发已经开始。和以前一样,我会在这里公布KlayGE 4.10的开发计划。欢迎有兴趣、有时间加入KlayGE 4.10开发阵营的朋友们继续参加。同时,4.10的开发流程有一些小的调整,也会在本帖中说明。
时间线
这里列出几个重要的时间点,以供进度参考。
2016年12月7日,feature complete:所有功能都已经完成,没完成的推迟到下一个版本。
2016年12月21日,code complete:完成所有代码,除非特殊情况,否则不能再改变接口。
2016年12月31日,release:正式发布KlayGE 4.10。
比起以前的开发周期,feature complete和code complete往后推迟了一周。因为这几个版本的开发中,测试 ...
[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编译的工作流。(由钱康来协助完成)
增加了使用音 ...
去年,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 ...
本系列前面的五篇已经让引擎可以在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应用。目前为止一切正常,程序可以编译链接运行。