c++ - 快速库替换CDC vector 图

标签 c++ mfc sdk gdi vector-graphics

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

  • 显示的 vector 数量可能非常大。例如,单个表面三角形在渲染时可能会生成数字线和实体填充。目前,此信息并未存储在任何地方,而是即时生成和绘制的。 SDK应该支持限制缓冲 vector 的总数,否则很容易耗尽内存。

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

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

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

  • 开源总是好的,但一次性成本高达 2000 美元,可选的升级/支持也可以。每个用户的许可成本是 Not Acceptable ,

  • 访问源代码将是一个很大的好处,特别是在 Windows CE/Mobile 上运行部分 SDK 的想法。

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

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

最佳答案

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

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

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

关于c++ - 快速库替换CDC vector 图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/203847/

相关文章:

c++ - 为什么 Visual Studio 2015 不链接到依赖的 dll 项目

c++ - 如何更改 VS2008 中的构建语言?

c++ - 删除列表控件 (MFC) 中的重复项

HTML 字体大小在嵌入式浏览器 (MFC) 中发生不可预测的变化

layout - 如何: Visio SDK page Re-Layout FlowChart Top to Bottom

Android Paypal SDK 错误 : Merchant does not Accept payments of this type

c++ - Homebrew 软件安装 g++ 4.7 不工作

c++ - 调试 3ds Max 插件时,退出调试时 3ds Max 总是关闭

c++ - makefile 中的 patsubst 不会替换完整的文件路径

php - 用户在 Facebook 上注销,JS SDK 停止工作