Java 如何绑定vec2&;带OpengGL片段着色器的vec3变量?
我正在开发一个android OpenGL ES应用程序,下面是我的片段着色器片段: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
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);