2011-11-15 2 views
1

OpenGL ES 2.0 및 GLSL을 사용하여 개체를 그립니다. 그런 다음 셰이더가 화면에 그려내는 조각에서 픽셀을 읽으 려합니다. 나는이 그레이 스케일 텍스처를 혼합하고 내 조각 쉐이더의 끝에서, 나는이 :GLSL 및 glReadPixels

gl_FragColor = vec4(something...blending textures);

내가 gl_FragColor 최종 색상이 프레임 버퍼에 기록된다는 것을 의미합니다 것을 알고있다. (http://nehe.gamedev.net/article/glsl_an_introduction/25007/에 따르면) 내가 처음에 나는 원래 texture1 같은 얻을 후 블랙 빈 색상을 얻을 것을 사용하여 이미지를 그린 후

GLubyte *pixels = new GLubyte[320*240]; 
glReadPixels(0, 0, 320,240, GL_LUMINANCE, GL_UNSIGNED_BYTE, pixels); 

같은 것을 한 것을 감안할 때. 누군가 나에게 잘못한 점을 도울 수 있습니까? FBO로 뭔가를해야합니까? 나는 좀 glReadPixels에 대한 정식 ES 2.0 문서 당

+1

glReadPixels 이후에 다음 프레임의 쉐이더에 입력되는 텍스처 중 하나를 업데이트한다고 가정합니다. 텍스쳐를 업데이트하는 코드를 더 게시하십시오. 오류가있을 수 있습니다. –

+1

프로그램에서 코드를 보여주십시오. – datenwolf

답변

3

:(... 분실, 형식 매개 변수입니다 :.

픽셀 데이터의 형식을 지정 허용하는 다음 기호 값 : GL_ALPHA , GL_RGB 및 GL_RGBA.

그래서 GL_LUMINANCE는 GL ES에서 지원되는 읽기 형식이 아닙니다. 그 너머

,이 정도의 작업 프레임 버퍼를 가지고 가정 필자가 정렬하고 프레임 버퍼에 적절히 배치 된 지오메트리 조각을 렌더링하여 조각 쉐이더를 적용하면 glReadPixels이 올바른 것을 사용해야합니다.