- 主题:想学习编程,求推荐
就是初始化也得多花时间,而且Qt程序每次界面变化不得调用底层库,这些庞大库代码的运行要多花时间。
【 在 z16166 的大作中提到: 】
: 你这是编程还没咋入门啊。二十几兆又不是一次性运行完毕的
: --
: 发自xsmth (iOS版)
--
FROM 112.111.193.*
实际上user32.dll的GDI显示很快(Windows内核都是汇编造的,就算几十年前80386电脑的win3.1都很快),而Qt程序在慢一点的电脑界面显示会先显示窗口框架,然后窗口内容才显示出来。
【 在 hgoldfish 的大作中提到: 】
: C++ Builder 的几百 KB EXE 也要画界面。只不过画界面的代码在 Windows 自带的 user32l.dll 里面,而 Qt 则是自带而已。
: 你这 GUI 编程没入门啊。Qt 发展了几十年,怎么可能比 C++ Builder 那一套古董的 user32.dll 还慢。所有现代的 GUI 构架都走向和 Qt 一模一样的 DirectUI 绘制方案,包括 Android, iOS 和 WPF,不是没有道理的。
:
--
FROM 183.251.227.*
就算C代码应该也是嵌入汇编的,关键的地方必然快。
【 在 hgoldfish 的大作中提到: 】
: 你没明白 user32.dll 的内部原理啊。它的绘制是一层叠一层,效率很差的。你搜一下 DirectUI 的历史就知道,我这里不详细说了。gdi32.dll 和 user32.dll 是纯 C 代码写的,前者对应于 Google 的 skia, gtk 的 cario,Qt 的 QtGui,是 2D 图形库,后者是控件库。这俩用的都是远古的技术,因为兼容性,已经很久没有改动了。
: 内核是内核,图形层是图形层。Windows 下所有的窗口软件都必须调用 user32.dll 创建窗口并绘制在窗口里面。谁都不例外。user32 自己也不例外。
: 讨论这些远古的技术挺无聊的。让我们来讨论 rust 怎么样写裸机应用一统天下吧。
: ...................
--
FROM 183.251.227.*
了解一下Delphi/C++ Builder跨平台的FMX框架(FireMonkey)
【 在 hgoldfish 的大作中提到: 】
: Qt 两种方案,一种是 QtQuick 使用的 QRHI, 底层是 directx/opengl/metal 每个平台各写一套的 shader. 另一种是 QtWidgets 使用的申请一段内存由 CPU 搞控件绘制,然后调用 gdi32.dll 的 BltBit 一次性复制到 GPU 显存。我研究过,BltBit() 在 Vista 以后的变化就是增加了 GPU 加速能力,是少数 GDI 里面有改进的函数。
: 前者直接到 GPU 做复杂效果,后者低延迟不卡顿。无论哪种方案都比 C++ Builder 强。
:
--
FROM 183.251.227.*
我没说gdi32/user32更强,只是说它绘制快。
【 在 hgoldfish 的大作中提到: 】
: 有时间我还不如去学 rust 和 nim 搞裸机开发或者 AI 搞钱。
: 它再强,难道还能比其它家的技术还强?你前面还在说 gdi32/user32 比 QtGui/QtWidgets 强,表明你对 GUI 的底层技术不太理解。后面再说哪个强我不敢信啊。
: 时代已经过去了。这些市场竞争的失败者还是洗洗睡吧。非要搞 GUI 开发的话,卷 20 年前的传统技术领域,还不如准备迎接未来的 VR 开发。实在不行也是搞移动端开发啊。
: ...................
--
FROM 183.251.227.*
DirectUI 主要就是无句柄,Windows窗口(控件)有句柄,在早期比如win3.1时代有资源限制,句柄等内核资源是有限的。跟绘制速度关系不大。
【 在 hgoldfish 的大作中提到: 】
: 然而并没有。我叫你去搜一下 DirectUI 的来龙去脉,你咋一直在重复呢。
:
--
FROM 120.35.168.*