在Windows上使用C语言进行直接GDI编程

3
我最近对使用纯C语言在Windows上进行高效编程产生了兴趣。我仍然希望为某些内容创建GUI,Windows API/GDI是否仍然是这样做的可靠方式?我不认为你可以为WPF进行常规调用,因为它在很大程度上是一种托管操作。在Vista/Win7下,GDI是否真的没有加速?如果是这样,除了使用OpenGL的自定义方法之外,还有其他替代方案来从纯C中获得硬件加速GUI吗?
此外,Petzold曾经是使用C语言进行Windows API编程的黄金标准,他的材料有新版吗?或者有其他人接过他的工作吗?我看到的最后一版是1999年的...

你提到了“硬件加速”。性能对你的应用程序是否是一个问题?你只是在做按钮和窗口,还是在做3D图形? - Greg Hewgill
目前没有3D图形,但可能会有一些频谱分析器类型的显示,因此需要一些性能。基本上我的概念是一种“软合成器”,具有相当不错的用户界面。大部分都是按钮和滑块类型的东西,但也会有一些图表/包络等。 - Chris D.
据我所知,WPF使用DirectX。http://blogs.msdn.com/b/greg_schechter/archive/2006/05/02/588934.aspx - Muad'Dib
我想要一个链接,证明Windows 6没有硬件加速的GDI。 - Chris Becke
2个回答

2
微软有一个页面比较了GDI和Direct2D的硬件加速。GDI vs Direct2D GDI一直是一个加速的API:当然,实际上将哪些GDI DDI加速留给了实际的GDI驱动程序实现来决定,因此通常是加速位块传输/拉伸位块传输操作,而所有线条绘制和其他效果都由CPU完成。
有些人认为这意味着与新的API相比,GDI已经不再“足够好了”,但老实说,所有图形都可以归结为移动矩形。
GdiPlus是用软件实现的,因此system.graphics CLR实现也是如此。

接受此回复是因为它最接近直接回答我的问题。如果能提供适当的MSDN页面链接则额外加分。 - Chris D.

0

一般来说,DirectX比GDI快得多,因为它在大多数视频卡上都有完全的加速。GDI可能具有一定的加速(在Windows 7和XP上,但不在Vista上),但DirectX仍然是首选。

就书而言,Petzold现在专注于WPF:Programming Windows Three Dimensional Presentation Foundation


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接