2015-05-19 158 views
0

我使用我的片段着色器來剪輯OpenGL ES 2.0中的對象。一切都運行良好,但是被裁剪的表面的顏色都是黑色的......我無法弄清楚如何改變顏色(理想情況下,我想與對象的其餘部分做類似的紋理,我已經包括下面我片段着色器的片段着色器使用discard不呈現任何內容到像素的代碼。OpenGL ES 2.0 Android剪輯顏色

 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); 
     } 
     } 
+0

不知道我完全理解這個問題。你是說它在着色器代碼中沒有'if'/discard'嗎?如果你補充說,一切都變黑了? –

+0

好的,這裏是我所擁有的圖片。 http://imgur.com/KZwpgIP – SyedKamran

+0

我不希望黑色中心頂部的東西...而是我想它是類似於其他紋理的東西。 – SyedKamran

回答

0

,它只是離開它,正是因爲它是以前的,所以黑色可能是你清晰的彩色或如果您想爲當前丟棄的像素渲染特定顏色,請爲您的着色器添加另一個uniform作爲剪輯顏色,如下所示:

uniform vec4 clipColor; 

設置它以同樣的方式設置了lightColor,然後而不是丟棄裁剪當像素,可以在像素設置爲剪輯的顏色:

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

如果我這樣做,我得到這樣的[this ...](http://imgur.com/GYxSaan) clipColor是白色的,但是我想要它,以便對象看起來像切片時一樣切片/剪切我使用丟棄,如[在此顯示](http://imgur.com/KZwpgIP) – SyedKamran

+0

我想要刪除第二個圖像頂部的黑色表面。 – SyedKamran

+0

您是否可以將所需的剪輯顏色設置爲您清晰的顏色並進行渲染? – samgak