如何将int数组传递给Android OpenGl片段着色器

Mik*_*iny 3 shader android opengl-es

我对OpenGl和着色器一般都是新手.我想在片段着色器中使用我的java代码中的静态int数组来操作相机的颜色.有没有办法将我的int数组传递给着色器或只是让着色器能够以某种方式访问​​我的数组?

谢谢,迈克

Tra*_*rax 5

在着色器代码中使用所谓静态数组的正确方法是将其作为Uniform传递:

http://www.opengl.org/wiki/GLAPI/glUniform

在着色器代码中,您指定需要外部数组:

uniform int colors[3]; // Specify an array of 3 integers
Run Code Online (Sandbox Code Playgroud)

在你的java代码中使用这个:

int array[3] = {0, 1, 2};
int location = GLES20.glGetUniformLocation(program_id, "colors");
GLES20.glUniform1iv(location,
              3,
              array,
              0);
Run Code Online (Sandbox Code Playgroud)