Opengl “什么是”呢;均匀取样器xx iChannel0..3“;在这个着色器中?

Opengl “什么是”呢;均匀取样器xx iChannel0..3“;在这个着色器中?,opengl,glsl,shader,Opengl,Glsl,Shader,我碰巧在着色器玩具上看到了这个着色器 我想知道: uniform samplerXX iChannel0..3; 是吗 我试图查看顶点着色器,但在那里找不到任何东西 另外,如何将音波转换为纹理?(此处正在执行此操作) 我想知道是什么样的人在做什么;是吗 一致性是外部设置的变量,在基本体绘制期间具有相同的着色器调用值(基本体包含的每个顶点调用顶点着色器,基本体绘制到的每个片段(大致转换为像素)的片段着色器) 采样器是OpenGL将纹理单元绑定到着色器的方法。在实际的OpenGL程序中,您正在

我碰巧在着色器玩具上看到了这个着色器

我想知道:

uniform samplerXX iChannel0..3; 
是吗

我试图查看顶点着色器,但在那里找不到任何东西

另外,如何将音波转换为纹理?(此处正在执行此操作)

我想知道是什么样的人在做什么;是吗

一致性是外部设置的变量,在基本体绘制期间具有相同的着色器调用值(基本体包含的每个顶点调用顶点着色器,基本体绘制到的每个片段(大致转换为像素)的片段着色器)

采样器是OpenGL将纹理单元绑定到着色器的方法。在实际的OpenGL程序中,您正在使用
glGenTextures
glActiveTexture
glBindTexture
glTexImage
(以及一系列其他函数,但这些都是重要的函数)加载纹理,并将使用glActiveTexture选择的纹理单元绑定到采样器

另外,如何将音波转换为纹理


纹理只是插值的查找表。您可以在LUT中放置您喜欢的任何数据。大多数情况下,纹理用于图像数据,但您也可以将PCM采样放入其中。因此,您只需从音频API获取PCM数据并将其作为数据传递到纹理中。

警告阅读此内容的任何人-如果您单击上面的链接,它将自动播放音乐。感谢您的解释。您是否有任何关于第二部分(以及如何将音频波转换为纹理)的参考资料(联机/书籍)可以实现吗?@user1109536任何关于现代OpenGL的教程都可以,因为着色器对于它的使用是基本的。我建议–音频只是一系列标量值(样本),按定义的平均时间间隔分开;在通常情况下,时间间隔是严格规则的,由一个精确的时钟控制,但如果在重建时使用相同的时间间隔,采样定理实际上允许时间间隔不均匀。@user1109536所以您要做的是读取音频(从文件、声卡等中),实现这一点的方法取决于提供示例数据的操作系统和/或文件格式。该样本数据通常以所谓的“帧”或特定长度(通常为几毫秒的音频样本)组织。每个样本的类型通常是8、16或32位的有符号或无符号整数或浮点。现在OpenGL支持glTex[Sub]Image1D接收的数据类型的相同类型。因此,您只需将包含音频帧的缓冲区传递给OpenGL,就像它是单通道图像数据一样。此外,thadertoy.com上的一个示例显示«声音作为512x2纹理上传。第一行是频谱,第二行是波形