【问题标题】:Straight GDI Programming in C on WindowsWindows 上的 C 语言直接 GDI 编程
【发布时间】:2011-04-28 20:36:10
【问题描述】:

我最近对使用纯 C 语言尽可能高效地为 Windows 进行编程产生了兴趣。我仍然想要一个 GUI 来处理某些事情,Windows API/GDI 仍然是解决这个问题的好方法吗?我不相信您可以定期调用 WPF,因为它在很大程度上是一个托管事务。 GDI在Vista/Win7下真的没有加速吗?如果是这样,是否有另一种选择可以从直接 C 获得硬件加速 GUI? (也许除了使用 OpenGL 的滚动方式)

另外,Petzold 曾经是使用 C 进行 Windows API 编程的黄金标准,他的材料是否有更新版本,或者有其他人接手了?我看到的最后一个版本是 1999 年的...

【问题讨论】:

  • 您提到了“硬件加速”。性能对您的应用程序来说是个问题吗?你只是在做按钮和窗口,还是在做 3D 图形?
  • 现阶段没有 3D 图形,但可能有一些频谱分析仪类型的显示器,所以性能稍微好一点。基本上我的概念是一种具有相当不错的 UI 的“软合成器”。主要是按钮和滑块类型的东西,但也有一些图表/信封等。
  • 我希望有一个链接指向某个说明 Windows 6 有/没有硬件加速 GDI 的网站。

标签: winapi c99


【解决方案1】:

微软有一个页面比较GDI vs Direct2D硬件加速。

GDI 一直是一个加速的 API:当然,它总是由实际的 GDI 驱动程序实现来决定 GDI DDI 的哪些位要实际加速,所以它通常是被加速的 bitblt / 拉伸 blit 操作,所有的线条绘制和其他效果都是由CPU完成的。

有些人认为这表明 GDI 与较新的 API 相比不再“足够好”,但坦率地说,所有图形实际上都转为移动矩形。

GdiPlus 是在软件中实现的,因此是 system.graphics CLR 实现。

【讨论】:

  • 接受此回复是因为此回复最接近我的问题的直接答案。链接到适当的 MSDN 页面的奖励积分。
【解决方案2】:

DirectX 通常比 GDI 快得多,因为它在大多数视频卡上都具有完全加速功能。 GDI 可能有一些加速(在 Windows 7 和 XP 上,但不是 Vista),但 DirectX 仍然是要走的路。

明智的做法是,Petzold 这些天都是关于 WPF 的:Programming Windows Three Dimensional Presentation Foundation

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-05-03
    • 1970-01-01
    • 1970-01-01
    • 2022-07-23
    • 1970-01-01
    • 2022-06-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多