本来计划在Qt5.9版本支持Vulkan的,但是跳水了一个版本,放到了Qt5.10。估计是因为5.9是长期支持版,怕vulkan带来了不稳定性。经过了一周时间的延后,正式版本还是发布了。似乎Qt Vulkan支持一直是 Laszlo Agocs 负责的(没有验证),最高的实验版本也是他给出的。
OpenGL很早就成为了Qt的渲染核心,我想在可见的将来,应该也不会替换成其他的渲染API。但是,Qt还是尝试了可替换渲染API的集成,更早的D3D12,现在的Metal,Vulkan。
我们知道OpenGL,D3D,Vulkan这样的API,对接的是操作系统底层的窗口对象,在win32,linux,macOS等上都有类似surface的概念。我们可以把surface理解为显示器上一块矩形像素区域。虽然我们在使用win32接口创建窗口时并不会见到surface的概念,但是,我们可以把HWND hWnd = CreateWindow(***) 理解为surface的简单封装,加上了minimize、close、icon、title等显示区域和功能。相反,在Linux 系统中,xlib 提供了Window对象(minimize、close按钮),和win32 API一样不负责任何绘制操作,cairo 库则是让surface封装了Window对象,负责绘制窗口系统,Qt则似乎是自己用QPainter、QPaintDevice等实现了cairo、gdi+等绘制二维图形的功能(待验证)。总体上来说,surface的概念,就是一块矩形像素,你可以自己操作像素来绘制二维,甚至三维图像(),它和窗口系统系统的事件无关。

最低0.47元/天 解锁文章
601





