首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用OpengGL片段着色器绑定向量2& bind 3变量?

如何用OpengGL片段着色器绑定向量2& bind 3变量?
EN

Stack Overflow用户
提问于 2017-03-22 07:25:59
回答 1查看 759关注 0票数 1

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

代码语言:javascript
复制
 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,我应该使用哪一个?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-22 09:10:27

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

GLES20.glUniform2fv将允许您将两个浮动的N个向量分配给您的统一变量。

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

代码语言:javascript
复制
GLES20.glUniform2f(myVariablePosition,f1,f2);

代码语言:javascript
复制
float[] myVector = {f1,f2};
GLES20.glUniform2f(myVariablePosition,1,myVector);

其中,1意味着只有1个向量的2个浮标被传递。

如果您想传递一个由两个浮点数组成的向量数组,那么您可以这样做:

代码语言:javascript
复制
float[] myVector = {f1,f2,....,f(N*2)};
GLES20.glUniform2f(myVariablePosition,N,myVector);
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42945219

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档