- 主题:想学习编程,求推荐
DirectUI 主要就是无句柄,Windows窗口(控件)有句柄,在早期比如win3.1时代有资源限制,句柄等内核资源是有限的。跟绘制速度关系不大。
【 在 hgoldfish 的大作中提到: 】
: 然而并没有。我叫你去搜一下 DirectUI 的来龙去脉,你咋一直在重复呢。
:
--
FROM 120.35.168.*
rust出了embedded-hal 1.0
【 在 hgoldfish 的大作中提到: 】
: 你没明白 user32.dll 的内部原理啊。它的绘制是一层叠一层,效率很差的。你搜一下 DirectUI 的历史就知道,我这里不详细说了。gdi32.dll 和 user32.dll 是纯 C 代码写的,前者对应于 Google 的 skia, gtk 的 cario,Qt 的 QtGui,是 2D 图形库,后者是控件库。这俩用的都是远
: 古的技术,因为兼容性,已经很久没有改动了。
: 内核是内核,图形层是图形层。Windows 下所有的窗口软件都必须调用 user32.dll 创建窗口并绘制在窗口里面。谁都不例外。user32 自己也不例外。
: ...................
--
FROM 123.125.167.*
哦 那跟其它的图形库一样
顺便说一句,应该是直接写 framebuffer 比用 shader 慢得多。
【 在 hgoldfish 的大作中提到: 】
: Qt 两种方案,一种是 QtQuick 使用的 QRHI, 底层是 directx/opengl/metal 每个平台各写一套的 shader. 另一种是 QtWidgets 使用的申请一段内存由 CPU 搞控件绘制,然后调用 gdi32.dll 的 BltBit 一次性复制到 GPU 显存。我研究过,BltBit() 在 Vista 以后的变化就是增加了 GPU 加速能力,是少数 GDI 里面有改进的函数。
: 前者直接到 GPU 做复杂效果,后者低延迟不卡顿。无论哪种方案都比 C++ Builder 强。
:
--
FROM 37.219.20.*
对,micro benchmark 下 shader 快,特别是动画效果、透明、等图形效率特别多的情况。但窗口 GUI 编程这种场景比较特殊。比如字体引擎根据规则渲染出一段大小不一的 LCD 子像素反锯齿文字,多数情况下使用 CPU 在内存中渲染后再输出给 GPU 显存反而更快。
不过巨硬已经开发出 DirectWrite 据说能够加速这种场景。有了解的可以过来普及一下,内部是啥原理。为啥苹果 iOS,Google Android 都做不到的事情,巨硬做到了。
【 在 philbloo 的大作中提到: 】
: 哦 那跟其它的图形库一样
: 顺便说一句,应该是直接写 framebuffer 比用 shader 慢得多。
: GPU 加速能力,是少数 GDI 里面有改进的函数。
: ...................
--
FROM 183.253.147.*
话说文字渲染就没见过成为2D引擎慢的原因的
3D 文字渲染以前总是出问题
【 在 hgoldfish 的大作中提到: 】
: 对,micro benchmark 下 shader 快,特别是动画效果、透明、等图形效率特别多的情况。但窗口 GUI 编程这种场景比较特殊。比如字体引擎根据规则渲染出一段大小不一的 LCD 子像素反锯齿文字,多数情况下使用 CPU 在内存中渲染后再输出给 GPU 显存反而更快。
: 不过巨硬已经开发出 DirectWrite 据说能够加速这种场景。有了解的可以过来普及一下,内部是啥原理。为啥苹果 iOS,Google Android 都做不到的事情,巨硬做到了。
--
FROM 36.101.221.*
一个是因为以前的文字渲染用了各种加速手段。比如 windows 以前对英文中文使用的其实是内嵌点阵,一直到 winxp 之后搞了才有 LCD 子像素渲染。二是以前的分辨率比较低,现在到处都是高 DPI 屏幕渲染计算量翻倍。三是文字渲染一般都是 TrueType,很难跑在 GPU 上面。四是浏览器渲染复杂度比静态文字高,Unicode还有各种奇葩。
我记得 3D 文字渲染一般也是在 CPU 里面渲染好之后,丢到显存里面当贴图。
文字的渲染绝对算这个世界上最复杂的工程之一。人类搞了几十年还没到尽头。
【 在 chaobill 的大作中提到: 】
: 话说文字渲染就没见过成为2D引擎慢的原因的
: 3D 文字渲染以前总是出问题
--
FROM 183.253.147.*
以后会不会汉卡再回来,用专门的硬件渲染字体?
【 在 hgoldfish 的大作中提到: 】
: 一个是因为以前的文字渲染用了各种加速手段。比如 windows 以前对英文中文使用的其实是内嵌点阵,一直到 winxp 之后搞了才有 LCD 子像素渲染。二是以前的分辨率比较低,现在到处都是高 DPI 屏幕渲染计算量翻倍。三是文字渲染一般都是 TrueType,很难跑在 GPU 上面。四是浏览
: 麂秩靖丛佣缺染蔡淖指撸琔nicode还有各种奇葩。
: 我记得 3D 文字渲染一般也是在 CPU 里面渲染好之后,丢到显存里面当贴图。
: ...................
--
FROM 36.101.221.*
汇编
【 在 flaybird111 的大作中提到: 】
: 本科计算机,读书期间代码量可以忽略,不过C++ prime啃过一遍,毕业后也没从事IT专业。在接近不惑之年,想重新学习下编程,求大佬推荐易于上手、又有一定实用性,应用面比较广的语言。比如Python如何?
--
FROM 183.162.8.*
将来可以在CPU里面集成FPGA,用来硬件渲染字体,汉卡还让它永远成为历史吧。
【 在 chaobill 的大作中提到: 】
: 以后会不会汉卡再回来,用专门的硬件渲染字体?
--
FROM 171.221.52.*
大约20年前的gpu gems系列里有篇文章,作者脑洞大开提出了个极简单算法,优点包括:
非常适合渲染矢量字体,只用了二次贝塞尔曲线的truetype字体是最简单的情况
三角化一次就能渲染任意尺寸,三角化的计算可以离线预处理
最后一步才进行抗锯齿计算,避免提前生成的抗锯齿纹理在渲染时会再次进行抗锯齿导致文本模糊
不需要大量内存保存纹理,上传给gpu的数据量小,显存和显存带宽占用小
【 在 hgoldfish 的大作中提到: 】
: 一个是因为以前的文字渲染用了各种加速手段。比如 windows 以前对英文中文使用的其实是内嵌点阵,一直到 winxp 之后搞了才有 LCD 子像素渲染。二是以前的分辨率比较低,现在到处都是高 DPI 屏幕渲染计算量翻倍。三是文字渲染一般都是 TrueType,很难跑在 GPU 上面。四是浏览
: 麂秩靖丛佣缺染蔡淖指撸琔nicode还有各种奇葩。
: 我记得 3D 文字渲染一般也是在 CPU 里面渲染好之后,丢到显存里面当贴图。
: ...................
--
FROM 114.249.239.*