【问题标题】:Is it reasonable to use OpenGL for desktop applications?将 OpenGL 用于桌面应用程序是否合理?
【发布时间】:2023-04-05 22:49:02
【问题描述】:

我一直在编写一个小型桌面小工具类型的应用程序,它在屏幕底部显示滚动文本(类似于旧的 CNN 新闻行情),但是 GDI 的性能并不令人满意(高达 8-12 % 在四核上,20% 在单核上),即使在我尝试清除瓶颈之后。

我正在考虑使用 OpenGL 来渲染所有内容,但我不知道这是否是一个合理的选择,要求用户为这样的小型应用程序提供硬件加速。

有人对此有意见吗?

【问题讨论】:

    标签: c# windows opengl gdi


    【解决方案1】:

    如果您对使用 OpenGL 感到满意,并且您的目标用户对 OpenGL 带来的额外依赖项感到满意,那么我建议您使用它。 :)

    就继续使用 GDI 而言,我会确保您尽可能多地渲染文本几次(通过渲染到位图等技术,然后只滚动它)。

    如果这两个选项中的任何一个听起来都不吸引人,那么总会有 DirectX。

    【讨论】:

    • 现在我设置它的方式是每个代码循环遍历所有活动项目(文本、位图等)并更新它们的位置,然后以另一种方法绘制所有项目到位图。当绘制到实际的窗口时,股票位图被 bitblt'd 到窗口本身。我选择了这个设计,因为它可以让我有选择地拥有一个以上的代码。
    【解决方案2】:

    您可以在 WPF 中编写应用程序并让 WPF 为您处理加速(它由 DirectX 提供支持)。

    【讨论】:

      【解决方案3】:

      我不想为这样的程序安装 open gl。你说你“试图”消除瓶颈,但听起来你并不成功。就像 lzcd 提到的那样,除了不断地重新绘制之外,还有其他方法可以滚动文本。为什么不直接绘制位图并滚动它?

      【讨论】:

      • 是的,我最初使用的是 GDI+,但后来我转向 GDI,并没有注意到性能有很大的提升。我还尝试过忽略绘制事件,直到准备好新帧以防止过度绘制。然而,就像 lzcd 提到的那样,我从来没有想过预先渲染整个股票代码,这听起来像是灵丹妙药。
      • @Ed:至少对于典型的操作系统,用户不需要安装任何额外的东西来让程序使用 OpenGL。无疑有一些例外(例如,至少默认情况下不包含 Mesa3D 的 Linux 发行版)但它通常对用户是透明的。
      • 是的,你是对的,尽管你仍然需要在你的应用程序中捆绑它(或链接到它)并确保它们使用正确的版本。我想我的意思是,对于这么简单的事情,没有理由使用大型图形库。
      猜你喜欢
      • 2015-09-24
      • 2015-11-03
      • 1970-01-01
      • 1970-01-01
      • 2020-08-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多