gpt4 book ai didi

c++ - 有效地渲染频谱图的可视化

转载 作者:搜寻专家 更新时间:2023-10-31 01:02:45 28 4
gpt4 key购买 nike

我正试图找到一种巧妙的方法来渲染大型频谱图(例如,全屏)。频谱图是一个坐标系,其中 x 轴是时间,y 轴是频率,颜色强度是频率分量的大小,看起来 like this (youtube).

值得注意的是,每一帧,一个新的列(1 像素宽)都是新的,但整个频谱的其余部分是相同的,只是向左移动了一个像素。目前我只是写入一个像图像一样的圆形软件缓冲区,然后绘制它 - 但它在高帧率和屏幕尺寸下显然很慢。

这个问题是否有任何明显的解决方案,使用 OpenGL(或一些软件技巧 - 但必须是跨平台的)?也许通过在 GPU 内存上使用一些缓冲区,并使用着色器填充它(诚然,除了绘制简单的东西之外,我对 OpenGL 的理解非常模糊)?正如我所见,它围绕着将旧数据保存在 GPU 内存上。

最佳答案

为瀑布使用单 channel 纹理(这就是您正在绘制的瀑布图),您可以使用 glTexSubImage 在其中一次更新一列或一行。通过使用 GL_WRAP 模式,您可以简单地将纹理坐标推进到纹理边界之外,并且它会自动换行。通过移动与更新相反的纹理,您可以获得瀑布效果(即移动频谱图,更新在右边缘进入)。

要赋予整个事物颜色,请使用纹理的值作为使用片段着色器的传递函数 LUT 纹理的索引。

关于c++ - 有效地渲染频谱图的可视化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26619777/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com