1개는 에지신호, 다른 한개는 그냥 3개의 값을 더한 값....
에지신호는 GL_COLOR_ATTACHMENT0_EXT, 다른 신호는 GL_COLOR_ATTACHMENT1_EXT 에 각각 저장을 하였습니다. 그 다음 이런식으로 출력....
buffers[0] = GL_COLOR_ATTACHMENT0_EXT; ==> output_texture_id[1];
buffers[1] = GL_COLOR_ATTACHMENT1_EXT; ==> output_texture_id[2];
glDrawBuffers(2, buffers);
최종적으로 output_texture_id[1]하고 [2]중에 하나를 출력을 해보았습니다....
그런데, 이상한게, output_texture_id[1]은 화면에 검은색이 출력되는데, output_texture_id[2]는 원하던 결과대로 나왔습니다.
해당 소스는 http://ipl.cnu.ac.kr/pds/showimg.zip 입니다.
제발 무엇이 잘 못된건가요?
이소스에서 의하스러운 코드는 gl_FragData[0]은 검은색이 나오고, gl_FragData[1]은 잘 나온다는 것이죠...
에혀~ 정말 잘 모르겠습니다. 왜 그런건지...
Code: Select all
uniform sampler2D sampler0;
uniform vec2 tc_offset[9];
void main(void)
{
float sample[9];
for (int i = 0; i < 9; i++) {
sample[i] = texture2D(sampler0, gl_TexCoord[0].xy + tc_offset[i]).r;
}
float horizEdge = (sample[2] + sample[5] + sample[8]) - (sample[0] + sample[3] + sample[6]);
float vertEdge = (sample[0] + sample[1] + sample[2]) - (sample[6] + sample[7] + sample[8]);
float mag = sqrt( horizEdge*horizEdge + vertEdge*vertEdge );
float A = (sample[2] + sample[5] + sample[8]);
float B = (sample[0] + sample[3] + sample[6]);
gl_FragData[0] = vec4(horizEdge,0,0,1);
gl_FragData[1] = vec4(0,B,0,1);
gl_FragDepth = 0.0;
}
사실 어제 결과를 잘 보고나서, 오늘 소스를 백업하지 더 많은 코드를 수정하고 추가했더니...
안나와요~~ 에휴~~
도무지 원인을 모르겠어요... 코멘트라좀 달아주세요....