最近一段时间准备学习新的下一代graphics API,DX12和Vulkan。发现目前公开的资料不多,特别是Vulkan,kronos的速度也真慢,正式的Spec还没有出来。倒是LunarG出了个SDK和其在intel平台上实现的Vulkan driver,只是笔者一直没找到公开的代码。
其实,无论DX12还是Vulkan都是来自AMD的Mantle,而AMD也已经放出了公开的Mantle API Refernce Doc. 这份文档写的很不错,条理清晰很有价值;笔者建议有兴趣的朋友一定要拜读一下。于是笔者决定先从新标准的鼻祖mantle入手学习,结合笔者多年图形学工作的经验,希望能对下一代API能有个叫深刻的认识。在此也把自己学习体会和大家分享一下,当做读书笔记吧:)
- Mantle 简介
mantle设计的理念和以往的API(D3D、OpenGL)完全不同;它是一个对GPU的更低级别的抽象,暴露了很多低级接口。比如mantle可以让game开发者直接操作Command Buffer;可以自己管理video memory。这中更低级的编程模型可以降低CPU的负担,从而得到更好的性能;这使得PC上的game编程更像game console了。
Mantle大大降低了驱动的复杂度,让很多原本在驱动中做的工作移到了应用程序里。这样的好处是应用程序可以根据自身特性,利用Mantle暴露的低级别的系统接口函数,实现符合自己的效率更高的优化。相对于D3D,OpenGL,Ma