我需要在windows应用程序中可视化设计,因此需要非常快速地绘制对角线。我尝试使用GDI +(因为我需要透明度),对角线的速度比绘制垂直/水平线慢约10倍。我有时需要大约400毫秒来绘制穿过屏幕的2000条对角线。
在此之后我测试了Direct2D,这比GDI +快了约2倍,但速度不够快。现在我开始看OpenGL来绘制2D图形。我会在场景中从上面看并使用正交投影。
任何人都可以告诉我,绘制高速对角线的正确方法是什么?
问候,皮特
答案 0 :(得分:0)
您可以手动将线光栅化为像素缓冲区(简称为2D整数数组),最好是用更快的语言(例如C中的外部DLL),然后 blit 缓冲区作为位图到您的窗口(GDI或DirectDraw就足够了)。
一个很好的程序是 Brensenham的行算法:https://en.wikipedia.org/wiki/Bresenham%27s_line_algorithm。
如果您需要抗锯齿:https://en.wikipedia.org/wiki/Xiaolin_Wu%27s_line_algorithm。
我将这种方法用于软件渲染器项目,并且当我从VB.NET迁移到C时,实现了x2性能提升(就像你使用Direct2D一样,但我还在使用GDI +)。我能够获得40旧的1.7 GHz奔腾机器上的FPS为800x600,GDI +为+ 25,因此我不确定为什么性能不合适。
答案 1 :(得分:0)
为获得最高性能,请使用OpenGL或Direct3D。您将能够利用硬件加速绘图而牺牲更多代码来设置内容。你应该能够轻松地在<16ms内绘制成千上万行。