我有一个成熟的 MFC C++ 应用程序,它在屏幕上显示并在 Win32 GDI 上使用 CDC 包装进行打印。虽然它多年来一直在优化,但我想用更快的东西来替换它。图形包括渲染的三角形表面模型、复杂的折线和多边形以及大量文本。它需要满足以下标准;

  • 显示的向量数量可能非常大。例如,单个表面三角形在渲染时可能会生成数轴和实心填充。目前,这些信息没有存储在任何地方,而是动态生成和绘制的。SDK应该支持限制缓冲向量的总数,否则可能会耗尽内存。

  • SDK 应该能够渲染任何 CWnd 派生类,包括 CView 和 ScrollView 类。

  • SDK 应支持打印到任何 Windows 打印设备,

  • SDK 的级别应该足够低,以使低级别 CDC/GDI 调用的端口相对简单。

  • 开源总是好的,但是一次性成本高达 2000 美元,并且带有可选的升级/支持也可以。每个用户的许可成本是不可接受的,

  • 访问源代码将是一个很大的好处,特别是考虑到在 Windows CE / Mobile 上运行 SDK 的部分内容时。

  • 我目前负责自己的 3D 到 2D 视口管理。如果没有像样的低级 SDK,则更高级别的 SDK 必须能够很好地处理 3D,并在 32 位 Windows 平台上处理数百万个三角形、多边形和文本实体。

有什么建议么?在您提出的建议中列出具体的优点和缺点将不胜感激。

有帮助吗?

解决方案

我曾经评估过 FastGraph (http://www.fastgraph.com)对于一个项目。我在我编写的小测试程序中喜欢它,它非常快。由于外部原因我们最终没有使用它(与我评估的库无关),所以我没有更多的实践经验。

其他提示

我认为 DirectX 或者 雪迪龙 会满足您的需求。它们专为 3D 设计,但也适用于 2D。两者都支持 Windows CE / Mobile,并且 SDL 也可用于一堆非 Microsoft 操作系统。

不幸的是,库不支持与 GDI 的直接兼容。但是您可以通过创建一个转换器类来实现这一点,该类将接受来自 GDI 设计的应用程序类的所有输出图形,并转换格式以满足 DirectX 或 SDL 类的需要(取决于您想要使用什么)。

我个人做过一次这样的转换器类。我有一个使用 SDL 为 Pocket PC 编写的游戏,我需要将其移植到 Palm 设备上。在那里,我必须使用不同的图形库(我现在不记得该库的名称),但我成功地将所有 SDL 函数输出移植为其他库所需的格式。我需要更改我的应用程序以调用转换器(包装器)函数,该函数将调用转发到 Palm 或 Pocket PC 库,具体取决于当前运行的设备。所以我认为你可以对 GDI -> DirectX 或 GDI -> SDL 进行相同的转换。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top