Это зависит от того, что вы хотите с ним делать.Для визуализации данных текстуры являются вполне естественным выбором, потому что ваш фрагментный шейдер (программа, которая на самом деле окрашивает отдельные пиксели) может получить доступ к данным с произвольных позиций в текстуре, и вы даже получаете интерполяцию между точками данных бесплатно.Это очень удобно для окрашивания пикселей на экране в качестве средства визуализации ваших данных.В этом примере он передает данные спектра (интенсивность в зависимости от частоты) в виде текстуры, умножая ее на выходной цвет, чтобы сделать изображение темным для аудиочастот, которые не являются частью спектра.
Aбуфер вершин не будет хорошим способом передачи данных в этом случае, потому что AFAIK фрагментный шейдер не может читать из буфера вершин.
Uniform - это просто метод получения глобальных данных в шейдереПрограмма, как если бы вы передали текстуру, которая будет использоваться для цвета или преобразования изображения.Автор использует его для передачи текстуры через uniform sampler2D spectrum
в своем фрагментном шейдере.
Если текстуры не имеют смысла для вас, потому что вы хотите использовать графический процессор для чего-то другого, кроме визуализации, тогдаВозможно, вы захотите использовать что-то вроде OpenCL или DirectCompute, которые предназначены для выполнения произвольных вычислений.
(кстати, HLSL не используется в этом примере, поскольку HLSL - это язык, используемый в Direct3D. Авториспользуя GLSL.)