这里的目的不是渲染,而是 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 ...
最佳答案
OpenGL 并不关心函数是如何实现的。
OpenGL是一套规范,其中有glGenerateMipmap
.
任何人都可以编写软件渲染器或开发符合规范的视频卡。如果它通过测试,它就是~OpenGL认证~
这意味着没有强制要求在 CPU 或 GPU 或任何地方执行任何功能,它们只需要产生 OpenGL 预期的结果。
现在是实际方面:
现在,您可以假设 mipmap 生成是由视频卡完成的,因为主要供应商采用了这种方法。
如果您真的想知道,则必须专门检查您正在编程的视频卡。
至于性能,假设您无法击败视频卡。
即使你想出一些在一些高科技 CPU 中执行的高度优化的代码,你也必须将你生成的 mipmap 上传到 GPU,并且单独的这个操作可能需要更多的时间,然后让在您上传全分辨率纹理后,GPU 会完成这项工作。
而且,如果您将 mipmaping 编程为着色器,仍然不太可能击败硬编码(甚至可能是硬连线)内置函数。 (以及单独的代码,不包括它可以更好地安排、分开处理等的事实)
This site explains the glGenerateMipmap history better =))
关于opengl - opengl 中的 mipmap 生成 - 是硬件加速吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23017317/