簡體   English   中英

OpenGL ES 2.0 Android裁剪顏色

[英]OpenGL ES 2.0 Android Clipping Color

我正在使用片段着色器來裁剪OpenGL ES 2.0中的對象。 一切工作正常,但是修剪的表面的顏色全是黑色...我不知道如何更改顏色(理想情況下,我想使對象的其余部分具有相似的紋理。我下面的片段着色器的代碼。

       precision mediump float; 

       varying vec2 texCoord;
       varying vec3 v_Normal;
       varying vec3 v_Position;
       varying vec4 originalPosition;

       uniform sampler2D texSampler2D;
       uniform vec3 lightPosition;
       uniform vec4 lightColor;

       void main()
       {
          vec3 L = normalize(lightPosition - v_Position);
          vec3 N = normalize(v_Normal);
          float NdotL = max(dot(N,L),0.0);

         if(originalPosition.y >= 2.0){
              discard;
         }else{
              gl_FragColor = NdotL * lightColor * texture2D(texSampler2D, texCoord);
         }
       }

使用丟棄在片段着色器不會呈現任何的像素,它只是離開它,正是因為它是以前的,所以黑色可能是你清晰的彩色或任何你以前渲染。 如果要為當前要丟棄的像素渲染特定的顏色,請向着色器添加另一種uniform的剪輯顏色,如下所示:

 uniform vec4 clipColor;

以與設置lightColor相同的方式進行設置,然后可以在裁剪時將像素設置為:

if(originalPosition.y >= 2.0) {
     gl_FragColor = clipColor;
} else {
     gl_FragColor = NdotL * lightColor * texture2D(texSampler2D, texCoord);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM