【问题标题】:mipmap generation in opengl - is it hardware accelerated?opengl中的mipmap生成 - 它是硬件加速的吗?
【发布时间】:2014-04-27 04:07:15
【问题描述】:

这里的目的不是渲染,而是gpgpu;它用于图像模糊:

给定一个图像,我需要使用固定的给定可分离内核对其进行模糊处理(参见例如Separable 2D Blur Kernel)。

对于 GPU 处理,一个很好的流行方法是 first filter the lines, then filter the columns; and using the vertex shader and the fragment shader to do so (*)

但是,如果我有一个固定大小的内核,我想我可以使用一个接近我想要的级别的快速计算的 mipmap,然后对其进行上采样(as was suggested here)

因此,问题是:opengl 创建的 mipmap 会比我使用 (*) 方法创建的 mipmap 快吗?

换一种说法:mipmap 创建是否在 gpu 本身上进行了优化?它是否总是优于(速度方面)用户创建的 glsl 代码?还是取决于显卡?

编辑: 感谢您的回复(Kahler,Jean-Simon Brochu)。但是,我仍然没有看到任何资源明确说明 gpu 生成的 mipmap 是否比任何用户创建的 mipmap 更快,因为特定的 mipmap-generation-gpu-hardware...

【问题讨论】:

  • 我没有完整的答案,但自定义 GLSL 着色器将被大规模并行化。一张好卡可以同时处理1000个碎片。但是没有什么能比得上好的性能测试了。
  • 你提到的那篇 Rastergrid 文章太好了!每一个偶然发现它的 OpenGL 学习者都有好运!

标签: opengl textures gpgpu blur gpuimage


【解决方案1】:

OpenGL 并不关心函数是如何实现的。

OpenGL是一套规范,其中有glGenerateMipmap

任何人都可以编写软件渲染器或开发符合规范的视频卡。如果它通过了测试,它就是~OpenGL认证~

这意味着没有任何功能必须在 CPU 或 GPU 或任何地方执行,它们只需要产生 OpenGL 预期的结果。


现在来说实际方面:

现在,您可以假设 mipmap 生成是由显卡完成的,因为主要供应商采用了这种方法。 如果您真的想知道,则必须专门检查您正在编程的视频卡。

至于性能,假设你无法击败显卡。

即使你想出一些高度优化的代码,在一些高科技的 CPU 上执行,你也必须将你生成的 mipmap 上传到 GPU,而仅此操作可能会花费更多时间然后在您上传全分辨率纹理后让 GPU 完成工作。

而且,如果您将 mipmaping 编程为着色器,仍然不太可能击败硬编码(甚至可能是硬连线)内置函数。 (以及单独的代码,不包括它可以更好地安排、分开处理等​​的事实)


This site explains the glGenerateMipmap history better =))

【讨论】:

  • 感谢您的回复。我遇到了您提供的链接,但我仍然不明白 mip-map 创建是否使用专用硬件完成..
  • 嗯……嗯……好吧。我已经编辑了它的全部荣耀的答案。
  • 好的,感谢您提供更全面的答案。我现在已经接受了:-)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-01-17
  • 2013-04-05
  • 2011-03-15
  • 1970-01-01
  • 2015-01-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多