我是一名Windows开发人员,对WinAPI程序有一些经验。据我所知,在Windows上绘图有两种方式,一种是调用GDI(包括类似GDI+的包装器)进行传统绘图,另一种是调用一些API(如DX或OpenGL)使用GPU进行绘图。
但像Qt这样的东西是什么呢?Qt最终是调用GDI来绘制东西吗?还是它有自己直接绘制的方式?我只想了解它的一般理论。
https://doc.qt.io/qt-5/topics-graphics.html
每个小部件都继承自QPaintDevice
,您可以检查绘图设备的类型:https://doc.qt.io/qt-5/qpaintengine.html#Type-enum
QtQuick似乎正在使用ANGLE(将ogl调用转换为Windows上的d3d) /纯OpenGL - https://blog.qt.io/blog/2017/01/18/opengl-implementation-qt-quick-app-using-today/
我在实践中不了解这个问题,但是http://qt-project.org/forums/viewthread/33565上的答案似乎是可靠的。
更新:这个页面似乎更准确:http://qt-project.org/wiki/Qt-5-on-Windows-ANGLE-and-OpenGL
在Windows上,Qt 5可以通过ANGLE库配置为使用OpenGL驱动程序或DirectX驱动程序。您需要什么取决于您的用例。Qt项目为这两种变体提供了二进制安装程序。