2017-09-18 1 views
0

더 쉬운 방법이있을 수 있습니다. 상상할 수있는 셰이더로 처리 할 수 ​​있지만 블렌드 기능을 설정하는 것이 더 간단하다고 생각합니다.OpenGL 혼합 기능을 사용하여 RBG/알파를 무시합니까?

쉐이더 어쩌면 이유로 gl_FragColor = vec4(texture.rgb, 0);

될 것이라고, 나는 갓 삭제 FBO 투명 (0) 질감 충전이 필요합니다. 그런 식으로 FBO의 픽셀은 시각적으로 투명하지만 텍스처의 RGB 값을 포함합니다.

설명하기가 어렵지만, 기본적으로는 glClear()이지만 단색이 아닌 텍스처가 있습니다. 이것을 달성 할 수있는 src/dst 함수의 조합이 있습니까?

기본적으로 FBO가 미리 어떻게 보이는지는 중요하지 않습니다. 그런 다음 텍스처를 렌더링하고 싶지만 알파 0으로 렌더링하므로 기존 FBO 픽셀을 덮어 쓰지 않습니다.

+0

내가하지 않는 생각 질문을 완전히 이해하지만 어쩌면 ['glColorMask'] (https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glColorMask.xhtml)가 도움이 될 것입니다. – Rabbid76

답변

3

당신이 정말로 혼합을 통해이 작업을 수행하려면, 당신은 GL_EXT_blend_func_separate에 처음 도입 된 별도의 혼합 요인을 통해이 작업을 수행 할 수 있습니다 (버전 2.0에서 OpenGL을 핵심 functionalitiy 승진) :

glEnable(GL_BLEND); 
glBlendFuncSeparate(GL_ONE, GL_ZERO, GL_ZERO, GL_ZERO); 
glBlendEquation(GL_ADD); // is the default anyway 
관련 문제