2016-09-02 24 views
3

사진 1은 다음과 같습니다두 개의 투명 PNG 사진에 대한 OpenGL 셰이더 믹스 기능이 왜 검은 색이됩니까?

enter image description here

사진 2는 다음과 같습니다 물론 사진 2의

enter image description here

부분적으로 투명합니다.

하지만 난 것과 같은 쉐이더에서 그들을 혼합 할 때 :

vec4 add(vec4 one, vec4 two){ 
    return mix(one, two, two.a); 
} 

그들은해진다는 다음과 같이 부분적으로 검은 색 :

enter image description here

내가 그것을 블랙 발생 이유에 대해 너무 혼란 스러워요 색깔. 나는 천하게이 같은 구현하는 기능을 혼합 알고 : 검은 색 생성하지 않습니다

A*(1-alpha)+B*alpha 

답변

1

마지막으로, 나는 알파 RGB를 나눔으로써이 문제를 해결 :

에만이 같은 두 번째 이미지의 알파에 따라 RGB 색상 값을 혼합한다 이유를 모르겠다. 하지만 나는 성공적으로 검은 색을 제거합니다.

2

를, 당신의 배경 색상입니다. 두 색상과 알파를 혼합하기 때문에 표시됩니다. 결과 알파가 1보다 작 으면 검정색 배경이 보입니다.

two.rgb/two.a 

내가 생각

vec4 add(vec4 one, vec4 two){ 
    return mix(one.rgb, two.rgb, two.a); 
} 
+0

지연 응답을 보내 드려 죄송합니다. 그러나 이러한 변경 사항은 여전히 ​​적용되지 않습니다. –

+0

그리고 gl_FragColor의 알파를 항상 1.0으로 설정 했습니까? 'gl_FragColor = vec4 (color.rgb, 1.0); ' – MarGenDo

+0

네, 텍스처의 문제라고 생각합니다. 원래 알파와 함께 흰색 인 곳에서 텍스처가 회색으로 왜 만들어야하는지 모르겠다 고 생각했습니다. –