|
1
26
问题是反锯齿已打开。禁用抗锯齿,Direct2d的性能将达到PAR或比GDI更快。要在创建tdirect2dcanavas后执行此操作,请执行以下调用:
tDirect2dcans在可能的情况下与tcanvas接口兼容,因此可以用tcanvas替换掉它,因此某些绘图例程效率有点低。例如,折线每次调用时都会创建一个几何图形,并将其丢弃。以提高保持几何体周围的性能。 查看tdirect2dcavans.polyline的实现,并将其吊到应用程序中,如下所示:
然后像这样画出来:
|
![]() |
2
3
Direct2d依赖于驱动程序和硬件实现,因此根据运行的硬件和驱动程序(与3D渲染引擎面临的问题相同),必然会出现性能异常。 例如,在渲染行的问题上,您可能会面临一些(隐藏的)底层硬件缓冲区问题:在给定的硬件+驱动程序上,绘制多段线时,如果底层数据大小低于某个阈值,则性能可能很高,并且具有完全的硬件加速。超过这个阈值,您可能会退回到部分软件或未经优化的路径,性能将大幅下降。阈值取决于硬件、驱动程序和画笔/绘图选项,可以存在,也可以不存在。 这些问题与通过OpenGL或常规DirectX渲染二维或三维时的问题相同,如果您偏离了被良好践踏的渲染路径,情况就不那么乐观了。 至于呈现非抗锯齿图形,我的建议是坚持使用GDI,实现是可靠的,有广泛的硬件支持。 对于抗锯齿图形、gdi+、graphics32、agg以及一般来说,仅软件解决方案是首选的IME 无论何时 您无法控制最终用户硬件。否则,就要为客户支持问题做好准备。 |
![]() |
3
3
在我的所有基准测试中,对于绘制多边形、直线、矩形等二维元素的特殊情况,OpenGL(有和没有MSAA抗锯齿)比GDI、GDI+或Direct2d快。 |
![]() |
4
1
相比之下,gdi+速度如何? 我们编写了一个免费/开源单元,能够使用gdi+引擎呈现任何VCL TCANVAS内容(使用tmeta文件)。 在实际操作中,性能非常好,并采取了防飞措施。 我们在几个项目中使用它,将常规组件内容绘制成位图,然后使用该位图在屏幕上绘制表单内容(这将避免任何闪烁问题)。 随着反认证,市场营销人员对结果很满意,其他程序员(使用C或WPF)想知道它是如何工作的:绘图速度非常快,应用程序是反应式的(像构建良好的Delphi应用程序),使用很少的内存,屏幕上的结果看起来很现代。(尤其是如果您使用Calibri或类似字体(如果您的系统可用)。 见 http://synopse.info/forum/viewtopic.php?id=10 它将与Delphi的任何版本(从Delphi6到DelphiXE)一起工作,并将在Windows的任何版本上工作(XP、Vista、Seven-需要与以前的操作系统一起部署标准gdiplus.dll)。 我们的设备在XP上使用Pascal代码进行gdi到gdi+的转换,在Vista、Seven或如果PC上安装了Office2003/2007,则使用本机的Microsoft隐藏API。 |
|
Christino · Delphi 2010和泛型 7 年前 |
![]() |
JakeSays · 从任务管理器隐藏和显示流程 11 年前 |
|
Edgar Holguin · 德尔福与印度 12 年前 |
![]() |
awmross · 为什么编译器会警告变量可能无法初始化? 12 年前 |