OpenGL ES如何在着色器中设置布尔值

虚假

我想在片段着色器中设置布尔值,因为我需要识别何时通过乘法为对象着色。但是我不知道如何从Java代码构造这个布尔变量。使用opengl es 3.0在Java中为Android创建项目。

precision mediump float;
uniform vec4 vColor;
uniform bool textured;
uniform sampler2D uTexture;
varying vec2 vTexCoordinate;

void main(){
    if(textured){
        gl_FragColor = texture2D(uTexture, vTexCoordinate);
        gl_FragColor *= vColor;
    } else {
        gl_FragColor = vColor;
    }
}
拉比德76

我建议使用int而不是boolif (textured != 0)

或者,您可以传递一个对纹理进行加权的浮点值:

precision mediump float;
uniform vec4 vColor;
uniform float textured;
uniform sampler2D uTexture;
varying vec2 vTexCoordinate;

void main()
{
    gl_FragColor = 
       vColor * mix(vec4(1.0), texture2D(uTexture, vTexCoordinate), textured);
}

mix在两个值之间线性插值。看一下表达式:

gl_FragColor = 
    vColor * mix(vec4(1.0), texture2D(uTexture, vTexCoordinate), textured);

如果为textured == 0.0,则将颜色乘以vec4(1.0)

gl_FragColor = vColor * vec4(1.0);

如果为textured == 1.0,则将颜色乘以从纹理查找返回的颜色:

gl_FragColor = vColor * texture2D(uTexture, vTexCoordinate);

如果为0.0 < textured < 1.0,则将vec4(1.0)和纹理颜色线性插值。


此外,在条件语句中查找纹理时要格外小心。请参见OpenGL ES 1.1完整规范-6个纹理访问;第110页

在非均匀条件块的主体内访问mip映射的纹理会给出不确定的值。非均匀条件块是无法在编译时确定执行的块。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用GPUImage在OpenGL ES着色器中具有布尔返回类型的函数

来自分类Dev

无法在OpenGL着色器中设置统一值

来自分类Dev

如何在OpenGL / GLES着色器中添加指令?

来自分类Dev

如何在不使用C ++中的OpenGL SuperBible着色器的情况下使用变换矩阵?

来自分类Dev

镶嵌着色器-OpenGL

来自分类Dev

OpenGL ES着色器中的Alpha渐变不平滑

来自分类Dev

如何在OpenGL ES着色器中使用3x3单应矩阵?

来自分类Dev

OpenGL着色器输入

来自分类Dev

顶点着色器和片段着色器如何在OpenGL中通信?

来自分类Dev

在OpenGL着色器中渲染纹理

来自分类Dev

着色器中的多个[in]属性-OpenGL

来自分类Dev

如何在OpenGL ES 2.0中使用可分离的滤镜着色器?

来自分类Dev

渲染之前可以设置OpenGL着色器访问哪些值?

来自分类Dev

OpenGL着色器与OpenGL ES 2.0的兼容性

来自分类Dev

如何提高OpenGL着色器中的纹理访问性能?

来自分类Dev

如何在OpenGL着色器中从纹理图块贴图绘制图块?

来自分类Dev

如何在Android的着色器中声明OpenGL版本?

来自分类Dev

如何在opengl着色器中使用unsigned short?

来自分类Dev

如何在OpenGL 4的着色器中设置gl_Vertex?

来自分类Dev

镶嵌着色器-OpenGL

来自分类Dev

顶点着色器或片段着色器中的OpenGL ES2.0 Lighting

来自分类Dev

OpenGL着色器输入

来自分类Dev

着色器创建Opengl

来自分类Dev

在OpenGL着色器中渲染纹理

来自分类Dev

Android OpenGL ES着色器编译器支持

来自分类Dev

如何使用OpenGL在着色器中设置顶点的颜色

来自分类Dev

将统一值设置到片段着色器 (OpenGL) 中

来自分类Dev

OpenGL工作着色器?

来自分类Dev

如何在 OpenGL 片段着色器中渲染最近的顶点

Related 相关文章

热门标签

归档