c++ - 可分离过滤器与渲染时间

标签 c++ opengl

我目前使用 3x3 或 5x5 Boxfilter,并考虑将过滤器分两步分开。首先是 x,然后是 y。这将节省一些计算时间。 为了实现这一点,我需要将第一步渲染到另一个附加帧缓冲区的纹理,并绘制另一个全屏四边形以获得完整的模糊(包括 x,y 模糊)。

从性能的角度来看,将过滤器分成两步与将 x 和 y 模糊成一步相比,是否有任何明显的改进?

最佳答案

一般来说,当您有 NxN 模糊滤镜时,您需要在着色器中读取 N^2 纹理。

当你使用单独的过滤器时,你会移动到 N+N reads + some_const

some_const - 表示两次渲染、更改缓冲区、驱动程序等的成本。

对于 3x3 模糊我认为不会有区别,对于 5x5 可能,但对于更大的内核应该有明显的区别。最好能衡量这两种方法的性能。

关于c++ - 可分离过滤器与渲染时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17471903/

相关文章:

c++ - 渲染多个对象时opengl闪烁

c++ - 访问冲突 : Bad pointer

c++ - 溢出 int 时 cin 的意外行为

c - 如何用不同于边界的颜色填充多边形?

opengl - 如何在Rust中将数据正确传递给openGL功能

c++ - 朴素表面网络算法 : how to connect vertices to form triangles?

c++ - 当 char {'0' 用作查找时,std::map '0' ,0} 对会导致逻辑错误

c++ - WinInet上传文件

c++ - 这是最快的一位数字排序算法吗?

linux - OpenGL 上下文的大小