3

我正在尝试在 opengl es 2.0 中使用着色器组合两个纹理

在此处输入图像描述

正如您在屏幕截图中看到的那样,我正在尝试使用动态环境映射在后向对象上创建针反射。但是,针的反射看起来是半透明的,并且与我的环境贴图融为一体。

这是我的片段着色器;

varying highp vec4 R;

uniform samplerCube cube_map1;
uniform samplerCube cube_map2;

void main()
{
    mediump vec3 output_color1;
    mediump vec3 output_color2;

    output_color1 = textureCube(cube_map1 , R.xyz).rgb;
    output_color2 = textureCube(cube_map2 , R.xyz).rgb;

    gl_FragColor = mix(vec4(output_color1,1.0),vec4(output_color2,1.0),0.5);  
}

但是,“混合”方法会导致混合两种纹理。

我还检查了纹理组合器示例,但它也没有帮助。

有什么方法可以结合两种纹理而不相互混合。

谢谢。

4

1 回答 1

1

从评论来看,我猜你想在风景画上画针。我只是将其渲染为叠加层,但由于您想在着色器中执行此操作,因此可能会起作用:

void main()
{
    mediump vec3 output_color1;
    mediump vec3 output_color2;

    output_color1 = textureCube(cube_map1 , R.xyz).rgb;
    output_color2 = textureCube(cube_map2 , R.xyz).rgb;

    if ( length( output_color1 ) > 0.0 )
         gl_FragColor = vec4(output_color1,1.0);
    else 
         gl_FragColor = vec4(output_color2,1.0);
}
于 2012-08-07T14:56:58.323 回答