문제

질감으로 렌더링 한 다음 같은 이미지를 그릴 때는 모든 것을 어둡게 만드는 것 같습니다. 이 이미지를 얻으려면 :

http://img24.imageshack.us/img24/8061/87993367.png

왼쪽 상단 정사각형을 색상으로 렌더링하고 있습니다 (1, 1, 1, .8) 질감으로, 그 질감과 그 중간 사각형 (동일한 색상)을 다른 질감으로 렌더링 한 다음 마지막으로 그 질감과 스크린의 하단 정사각형 (동일한 색상)을 늘립니다.

보시다시피, 질감에 렌더링 할 때마다 모든 것이 조금 더 어두워집니다.

내 렌더 텍스트 코드는 다음과 같습니다. (iPhone에서 OpenGl es를 사용하고 있습니다)

// gen framebuffer
GLuint framebuffer;
glGenFramebuffersOES(1, &framebuffer);
glBindFramebufferOES(GL_FRAMEBUFFER_OES, framebuffer);

// gen texture
GLuint texture;
glGenTextures(1, &texture);

glEnable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D, texture);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
glBindTexture(GL_TEXTURE_2D, 0);
glDisable(GL_TEXTURE_2D);

// hook it up
glFramebufferTexture2DOES(GL_FRAMEBUFFER_OES, GL_COLOR_ATTACHMENT0_OES, GL_TEXTURE_2D, texture, 0);
if(glCheckFramebufferStatusOES(GL_FRAMEBUFFER_OES) != GL_FRAMEBUFFER_COMPLETE_OES))
   return false;

// set up drawing
glBindFramebufferOES(GL_FRAMEBUFFER_OES, framebuffer);
glViewport(0, 0, Screen::Width, Screen::Height);

glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(0, Screen::Width, 0, Screen::Height, -1, 1);

glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glColor4f(1, 1, 1, 1);

// do whatever drawing we'll do here
Draw();

glBindFramebufferOES(GL_FRAMEBUFFER_OES, 0);

내가 여기서 잘못하고있는 것이 있습니까? 파악하려면 더 많은 코드가 필요합니까? 여기서 무슨 일이 일어나고 있습니까?

도움이 되었습니까?

해결책

나는 단지 추측하고있다 :

첫 번째 텍스처를 그리면 RGB 및 알파 채널에서 204 (0.8 * 255)가 제공됩니다. 두 번째로 그리기 (GL_BLEND를 활성화하면, 추정), 80% 알파가있는 밝은 회색 204 RGB를 얻으므로 중간 회색을 제공합니다.

해결책 : 사용 glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA) 그리고 당신의 색상.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top