将音频频谱作为libGDX中的纹理传递到着色器

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将音频频谱作为libGDX中的纹理传递到着色器相关的知识,希望对你有一定的参考价值。

我正在使用libGDX开发音频可视化器。

我想将音频频谱数据(包含音频样本的FFT的数组)传递给我从Shadertoyhttps://www.shadertoy.com/view/ttfGzH中获取的着色器。

在GLSL代码中,我期望包含数据作为纹理的制服:

uniform sampler2D iChannel0;

问题是我不知道如何将任意数组作为纹理传递给libGDX中的着色器。

我已经在SO和libGDX的论坛中进行搜索,但是对我的问题没有令人满意的答案。

这是我的Kotlin代码(显然不适用于xD):

val p = Pixmap(512, 1, Pixmap.Format.Alpha)
val t = Texture(p)
val map = p.pixels
map.putFloat(....) // fill the map with FFT data
[...]
t.bind(0)
shader.setUniformi("iChannel0", 0)

我正在使用libGDX开发音频可视化器。我想将音频频谱数据(包含音频样本的FFT的数组)传递给我从Shadertoy获取的着色器:https://www.shadertoy.com / ...

答案

您可以简单地使用drawPixel方法并将数据存储在每个像素的第一个通道中,就像在阴影示例中一样(它们使用红色通道)。

以上是关于将音频频谱作为libGDX中的纹理传递到着色器的主要内容,如果未能解决你的问题,请参考以下文章

将顶点保存到纹理并传递给着色器

LibGDX 3d 模型纹理未正确渲染

将 UInt8 组件类型的纹理传递给 Metal 计算着色器

OpenGL着色器没有传递正确的纹理坐标

影响整个屏幕的Libgdx着色器

我在我的 libgdx_project 中使用 FBO 渲染图像传递模糊着色器,fps 下降到 20。为啥?