2010-06-11 42 views
3

我一直在写屏幕底部显示滚动文本的小桌面小工具类应用程序(类似于旧CNN新闻自动收报器),但是GDI的性能仅仅不理想(高达8-12%在四核和20%的单核上),即使在我尝试清除瓶颈之后。将OpenGL用于桌面应用程序是否合理?

我正在考虑使用OpenGL来代替所有东西,但我不知道这是否是一个合理的选项,要求用户为此类小应用程序提供硬件加速。

有没有人对此有任何意见?

回答

2

如果您对使用OpenGL感到满意,并且您的预期用户对OpenGL带来的附加依赖感到满意,那么我会为此付出代价。 :)

在保持与GDI,我会确保你渲染的文字尽可能几次(通过像渲染位图,而不是滚动的技术)。

如果这两个选项中没有一个听起来很吸引人,那么总是有DirectX。

+0

现在我设置的方式是每个ticker循环遍历所有活动项目(文本,位图等)并更新它们的位置,然后在另一个方法中将所有项目绘制到位图。 当绘制到实际的窗口时,ticker位图被bitblt'd窗口本身。 我采用这种设计,因为它可以让我有选择地有更多的一个自动收报机。 – JamesK89 2010-06-11 02:37:46

1

我不想为这样的程序安装打开的gl。你说你“试图”消除瓶颈,但听起来并不像你成功。像提到的lzcd一样,还有其他方法可以滚动文本,而不是重新绘制文本。为什么不画一个位图并滚动呢?

+0

是的,我最初使用GDI +,但我转移到GDI,并没有注意到一个巨大的性能改进。我还试图忽略绘画事件,直到新框架准备好以防止透支。 但是,像lzcd提到的,我从来没有想过预先渲染整个ticker,这听起来像是魔法弹。 – JamesK89 2010-06-11 02:43:52

+1

@Ed:至少对于一个典型的操作系统,用户不会为程序使用OpenGL安装任何额外的东西。毫无疑问,有些例外(例如,Linux发行版不包含Mesa3D,至少在默认情况下),但它通常对用户来说是透明的。 – 2010-06-11 02:52:50

+0

是的,你说得对,尽管你仍然必须在应用中捆绑它(或链接到它),并确保它们使用的是正确的版本。我想我的观点是,对于如此简单的事情,没有理由使用大型图形库。 – 2010-06-11 03:03:53

2

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

相关问题