c++ - Qt 使用哪种图形技术来呈现其自定义 UI?

标签 c++ qt opengl directx

我使用窗口 spy 工具检查了 Qt GUI 界面,我知道它不使用 Windows 通用控件或任何自定义窗口类来创建其 UI 元素和动画效果。我之前在这里询问过有关使用 GDI/GDI+ 开发自定义 GUI 框架的问题,但大多数人都反对这些技术,所以问题仍然是 Qt 或任何其他等效的专用系统使用哪种图形技术来呈现他们的 UI?

我知道 DirectX/OpenGL,但它对于简单的要求来说是不是太过分了?如果答案是上述之一,那么我又想知道如何使用这些多边形渲染技术实现强大的字体渲染和 vector 图形解决方案?全功能文本编辑器是另一个巨大的挑战。

也已经存在基于 directx/opengl 的解决方案,如 MyGUI 和 CEGUI,但我认为它们看起来很丑,与 Qt 的外观相去甚远。

最佳答案

首先,Qt-5 引入了一种新的渲染模型,它可以(但不是必须)使用 OpenGL 来渲染 UI 元素。这样做的结果是,可以真正将自定义 OpenGL 渲染与 Qt 小部件混合在一起。缺点是需要某种 OpenGL 支持,但并非所有系统都有。

所以 Qt 还有另外两个绘图系统:Native,它将使用主机系统的原生图形基元(GDI、CoreGraphics、X11/XRender)和raster,它对整个整体进行完整的光栅化进入像素缓冲区的窗口,然后只有那些被传送到底层图形系统。 raster 是最慢的图形后端,但它为所有平台和目标系统提供了一致的结果。因此,光栅 通常用于严格要求外观一致的程序。

关于c++ - Qt 使用哪种图形技术来呈现其自定义 UI?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31068740/

相关文章:

c++ - 在 C++ 中,为重载函数强制转换为子类?

c++ - 如何决定要打印的 QtMsgType 消息类型

qt - 在 Qt 中,我可以 QWebFrame::print() 提供额外的渲染层吗?

opengl - 栅格化点/像素网格的快速方法

opengl - 计算着色器写入纹理

c++ - 64位内存分配

c++ - 停止 xsd.exe 从 xsd 模式自动生成 C++ 头文件

c++ - 观察内存位置/从代码安装 'data breakpoint'?

c++ - 使用 SNMPv2 和 c++ 编写 getBulkRequest 函数

opengl - 扩展和性能