在桌面应用程序中使用OpenGL是否合理?

4
我正在编写一款小型桌面小部件应用程序,它在屏幕底部显示滚动文本(类似于旧版CNN新闻滚动条),但是GDI的性能令人不满意(即使我尝试消除瓶颈,在四核处理器上高达8-12%,在单核处理器上高达20%)。
我考虑改用OpenGL来渲染所有内容,但我不知道这是否是一个合理的选项,为这样一个微小的应用程序要求用户具备硬件加速。
有人对此有任何意见吗?
3个回答

2
如果您熟悉使用OpenGL,并且您的目标用户对OpenGL带来的额外依赖感到满意,那我建议您使用它。 :)
如果要继续使用GDI,请确保尽可能少地渲染文本(通过诸如渲染到位图并仅滚动该位图等技术)。
如果这两个选项都不可行,那么始终可以使用DirectX。

现在我设置的方式是每个股票代码循环遍历所有活动项(文本、位图等),并更新它们的位置,然后在另一个方法中将所有项绘制到位图上。 在绘制到实际窗口时,股票代码位图被 bitblt 到窗口本身。我选择这种设计是因为它允许我可选地拥有多个股票代码。 - JamesK89

2

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


1

我不想为这样的程序安装OpenGL。你说你“尝试”消除瓶颈,但听起来你并没有成功。正如lzcd所提到的,有其他方法可以滚动文本而不是不断重绘它。为什么不只是绘制到位图上并滚动呢?


是的,我最初使用了GDI+,但后来转向了GDI,并没有注意到巨大的性能提升。我还尝试过一些方法,比如忽略绘制事件,直到准备好新帧以防止重绘。 然而,就像lzcd提到的那样,我从未想过预先渲染整个滚动条,这听起来像是一个神奇的解决方案。 - JamesK89
1
@Ed:至少对于一个典型的操作系统而言,用户不需要安装任何额外的东西才能使用OpenGL。毫无疑问,会有一些例外情况(例如,某个Linux发行版默认情况下不包含Mesa3D),但这通常对用户是透明的。 - Jerry Coffin
是的,你说得对,不过你仍然需要将它捆绑(或链接)到你的应用程序中,并确保他们使用正确的版本。我想我的观点是,对于如此简单的东西,没有理由使用一个大型的图形库。 - Ed S.

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