Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何绑定vec2&;带OpengGL片段着色器的vec3变量?_Java_Android_Opengl Es - Fatal编程技术网

Java 如何绑定vec2&;带OpengGL片段着色器的vec3变量?

Java 如何绑定vec2&;带OpengGL片段着色器的vec3变量?,java,android,opengl-es,Java,Android,Opengl Es,我正在开发一个android OpenGL ES应用程序,下面是我的片段着色器片段: uniform sampler2D inputImageTexture; varying highp vec2 textureCoordinate; uniform lowp vec2 vignetteCenter; uniform lowp vec3 vignetteColor; uniform highp float vignetteStart; uniform highp float vig

我正在开发一个android OpenGL ES应用程序,下面是我的片段着色器片段:

 uniform sampler2D inputImageTexture;
 varying highp vec2 textureCoordinate;

 uniform lowp vec2 vignetteCenter;
 uniform lowp vec3 vignetteColor;
 uniform highp float vignetteStart;
 uniform highp float vignetteEnd;

 void main()
 {
     lowp vec4 sourceImageColor = texture2D(inputImageTexture, textureCoordinate);
     lowp float d = distance(textureCoordinate, vec2(vignetteCenter.x, vignetteCenter.y));
     lowp float percent = smoothstep(vignetteStart, vignetteEnd, d);
     gl_FragColor = vec4(mix(sourceImageColor.rgb, vignetteColor, percent), sourceImageColor.a);
 }

我的问题是我想用上面GLSL的vignetteCenter和vignetteColor绑定一个变量,我不知道哪种Java类型的对象对应于vec2和vec3?GLES20.glUniform2f或GLES20.glUniform2fv,我应该使用哪一种

GLES20.glUniform2f
将允许您为统一变量分配一个由2个浮点组成的向量

GLES20.glUniform2fv
将允许您为统一变量分配2个浮点的N个向量

因此,给定两个浮点数f1和f2,您可以使用

GLES20.glUniform2f(myVariablePosition,f1,f2);

其中1表示只传递2个浮点的1个向量

如果要传递一个包含2个浮点的向量数组,请执行以下操作:

float[] myVector = {f1,f2,....,f(N*2)};
GLES20.glUniform2f(myVariablePosition,N,myVector);
float[] myVector = {f1,f2,....,f(N*2)};
GLES20.glUniform2f(myVariablePosition,N,myVector);