我正在开发一个安卓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,我应该使用哪一个?
发布于 2017-03-22 09:10:27
GLES20.glUniform2f将允许您为统一变量分配一个由2个浮点数组成的向量。
GLES20.glUniform2fv将允许您将两个浮动的N个向量分配给您的统一变量。
因此,给定两个浮点f1和f2,您可以使用
GLES20.glUniform2f(myVariablePosition,f1,f2);或
float[] myVector = {f1,f2};
GLES20.glUniform2f(myVariablePosition,1,myVector);其中,1意味着只有1个向量的2个浮标被传递。
如果您想传递一个由两个浮点数组成的向量数组,那么您可以这样做:
float[] myVector = {f1,f2,....,f(N*2)};
GLES20.glUniform2f(myVariablePosition,N,myVector);https://stackoverflow.com/questions/42945219
复制相似问题