GL_REPLACE 使用片段着色器?
GL_REPLACE with a fragment shader?
如何使用 es 2 模拟旧版 opengls texenv gl_replace 模式?
基本上,如果纹理片段 alpha 为 0,我想使用基元颜色。但除此之外不影响碎片颜色。
我是 glsl 的新手,可以使用帮助。
我在 android 并且我已经获得了透明的纹理。
我只想使用一个着色器程序。我得到了什么:
gl_FragColor=texture2D(u_TextureUnit,v_TextureCoords);
我喜欢给图元添加一种颜色,只在纹理透明的地方显示
此代码段将输出顶点颜色和纹理颜色之间的混合,由纹理 alpha 控制,我认为这就是您想要的。如果不是,请尝试更准确地描述您的输入和期望的输出是什么。
lowp vec4 vPrimitiveCol = colour_from_vertex_passed_as_varying;
lowp vec4 vTexCol = texture2D(u_TextureUnit,v_TextureCoords);
gl_FragColor.rgb = mix(vPrimitiveCol.rgb, vTexCol.rgb, vTexCol.a);
gl_FragColor.a = 1.0;
你想要的不是GL_REPLACE
,它会完全取代片段颜色。听起来更像 GL_BLEND
。无论如何,您可以使用 GLSL 混合功能模拟它:
solid_color = ...;
tex_color = texture(texture_sampler, texture_coord);
gl_FragColor = mix(solid_color, tex_color, tex_color.a);
请注意,我用更新的(推荐的)通用类型 texture
函数替换了旧的 texture2D
函数。
如何使用 es 2 模拟旧版 opengls texenv gl_replace 模式? 基本上,如果纹理片段 alpha 为 0,我想使用基元颜色。但除此之外不影响碎片颜色。 我是 glsl 的新手,可以使用帮助。
我在 android 并且我已经获得了透明的纹理。 我只想使用一个着色器程序。我得到了什么: gl_FragColor=texture2D(u_TextureUnit,v_TextureCoords); 我喜欢给图元添加一种颜色,只在纹理透明的地方显示
此代码段将输出顶点颜色和纹理颜色之间的混合,由纹理 alpha 控制,我认为这就是您想要的。如果不是,请尝试更准确地描述您的输入和期望的输出是什么。
lowp vec4 vPrimitiveCol = colour_from_vertex_passed_as_varying;
lowp vec4 vTexCol = texture2D(u_TextureUnit,v_TextureCoords);
gl_FragColor.rgb = mix(vPrimitiveCol.rgb, vTexCol.rgb, vTexCol.a);
gl_FragColor.a = 1.0;
你想要的不是GL_REPLACE
,它会完全取代片段颜色。听起来更像 GL_BLEND
。无论如何,您可以使用 GLSL 混合功能模拟它:
solid_color = ...;
tex_color = texture(texture_sampler, texture_coord);
gl_FragColor = mix(solid_color, tex_color, tex_color.a);
请注意,我用更新的(推荐的)通用类型 texture
函数替换了旧的 texture2D
函数。