2017-04-07 5 views
0

일부 쉐이더로 설정된 webgl 쉐이더가 있습니다. 나는 여러가 (gl_FragData []) 최초의 쉐이더에서여러 쉐이더 파일에서 gl_FragData [] 사용

, I 출력 할 수

내 두 번째 쉐이더와 지금
gl_FragData[0] = vec4(..); 
gl_FragData[1] = vec4(..); 
gl_FragData[2] = vec4(..); 

에 렌더 타겟을 사용하고, 내가 gl_FragData에 출력하고자 [3]과 저장 내 세 번째 쉐이더로 전달할 텍스처.

두 번째 셰이더가 gl_FragData [3]에 출력되지 않는 것처럼 보입니다. 그러나 첫 번째 셰이더에서 사용하면 두 번째 셰이더가 작동합니다. gl_FragData [3]의 출력을 텍스처에 저장하고 세 번째 쉐이더로 보내주기를 원합니다.

프레임 버퍼와 관련이 있다고 생각하지만, 변경하려고 시도했지만 운이 없었습니다. 내가 뭘 놓치고 있니?

+0

왜 프레임 버퍼를 2 개만 만드는 것이 아닙니다. 하나는 첨부 파일 3 개, 나머지 하나는 두 번째 셰이더의 gl_FragData [0]에 출력됩니다 – gman

답변

0

동일한 프레임 버퍼를 사용하려는 경우 사용하지 않은 그리기 버퍼를 마스크 처리해야합니다 (첫 번째 셰이더는 drawBuffers([COLOR_ATTACHMENT0, COLOR_ATTACHMENT1, COLOR_ATTACHMENT2]), 두 번째 셰이더는 drawBuffers([NONE, NONE, NONE, COLOR_ATTACHMENT3])). EXT_draw_buffers 가입일

:

상관 색 또는 색 성분, 프래그먼트 쉐이더에 의해 기록되지 단편과 연관이 정의된다.