【问题标题】:Use Graphic card (DirectX, OpenGL) instead of GDI or GR32 functions使用显卡(DirectX、OpenGL)代替 GDI 或 GR32 函数
【发布时间】:2015-05-04 22:05:13
【问题描述】:

目前我在我的项目中使用 GR32 函数,其中我有很多混合、图像操作,如饱和度、对比度、模糊等。还有自定义图像操作。

基本上我想用显卡指令替换GR32(或GDI,没有区别),以便使用显卡而不是CPU进行处理。

我不需要 OpenGL 单元,我不想做任何 3D 操作,我只想使用显卡计算而不是 CPU 指令。

我的问题是>

  1. 使用 GPU 的最佳方式是什么?
  2. 是否有为此目的编写的库?

【问题讨论】:

  • 如果你想用比 OpenGL 或 DirectX 更简单的 API 来做 2D 事情,你可以看看 SDL 或 SFML。
  • GLScene 也是一种可能。此外,如果您不是真的在寻求最佳性能,而是在寻求简单的东西,请查看较新的 XE Delphis 的 FireMonkey 方面。它们很容易使用,但也有它们的烦恼。例如,您可以在同一个表单上拥有 2D 和 3D。 XE5-7 版本很好用,早期版本有很多bug。
  • 火猴!它在 Windows 上使用 Direct2D(DirectX 中的 2D 层),在其他平台上使用 OpenGL。使用通过着色器实现的“效果”来模糊、饱和等。

标签: delphi opengl directx directdraw


【解决方案1】:

使用 OpenGL 或 Direct3D。这些是与 GPU 对话的 API。

此外,OpenGL 和 Direct3D 都不能在 3D 场景上运行。他们所做的只是将点、线或三角形绘制到像素帧缓冲区,应用可编程着色器和固定功能混合操作。换句话说,他们完全按照您的意愿行事。

关于 OpenGL 和 Direct3D 的唯一“3D”是点、线或三角形的坐标有超过 2 维,但最终这些坐标被投影到 2D 窗口坐标中。然后将点、线和三角形光栅化为窗口坐标空间中的平面二维形状。

【讨论】:

  • 谢谢,这是我所期望的。但是是否有一些包含一些包装函数的 Delphi 库,可以替代 OpenGL/Direct 3D 函数?
  • 好吧,我对 Delphi 不是特别了解,但 Cairo (cairographics) 有一个(实验性的)OpenGL 后端; Cairo 有一个 C 风格的 API,所以为 Delphi 创建绑定应该不会太难,如果某个地方还没有可用的绑定的话。
  • FireMonkey - 一个完整的图形和 UI API,由 Delphi 提供,根据平台使用 Direct2D 或 OpenGL。直接查看我对您的问题的评论。
猜你喜欢
  • 2017-07-12
  • 1970-01-01
  • 2016-07-29
  • 2010-10-04
  • 2011-11-10
  • 1970-01-01
  • 2012-05-28
  • 1970-01-01
  • 2011-06-11
相关资源
最近更新 更多