2013-05-19 5 views
-2

FBO로 렌더링 한 다음 화면 버퍼로 렌더링하면 텍스처가 어두워집니다. 여기에서 볼 수 있듯이 ->http://imgur.com/QZNyY8U왜 FBO로 렌더링하면 텍스처가 더 어두워 집니까?

RenderTarget target = new RenderTarget(Display.getWidth(), Display.getHeight()); 

렌더 타겟 클래스는 여기에서 찾을 수 있습니다 : 사용 http://pastebin.com/anpBPsgv

GL11.glClear(GL11.GL_COLOR_BUFFER_BIT | GL11.GL_DEPTH_BUFFER_BIT); 

// set the color of the quad (R,G,B,A) 
GL11.glColor4f(5/255f, 35/255f,70/255f, 1f); 

//Bind Render Target 
target.bind(); 

// draw quad on FBO 
GL11.glBegin(GL11.GL_QUADS); 
    GL11.glVertex2f(0,0); 
    GL11.glVertex2f(0+200,0); 
    GL11.glVertex2f(0+200,0+200); 
    GL11.glVertex2f(0,0+200); 
GL11.glEnd(); 

target.unBind(); 

glEnable(GL_TEXTURE_2D); // enable texturing 
glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0);// switch to rendering on the framebuffer 
glClearColor (0.0f, 0.0f, 0.0f, 1.0f); 
glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);// Clear Screen And Depth Buffer on the framebuffer to black 
glBindTexture(GL_TEXTURE_2D, target.colorTextureID); // bind our FBO texture 

//Draw FBO on screen buffer 
glBegin(GL_QUADS); 
    glTexCoord2f(0.0f, 0.0f); glVertex2i(0, 0); 
    glTexCoord2f(1.0f, 0.0f); glVertex2i(Display.getWidth(), 0); 
    glTexCoord2f(1.0f, 1.0f); glVertex2i(Display.getWidth(), Display.getHeight()); 
    glTexCoord2f(0.0f, 1.0f); glVertex2i(0, Display.getHeight()); 
glEnd(); 

glDisable(GL_TEXTURE_2D); 

//Draw same colour image without gonig through FBO 
GL11.glBegin(GL11.GL_QUADS); 
    GL11.glVertex2f(200,0); 
    GL11.glVertex2f(200+200,0); 
    GL11.glVertex2f(200+200,0+200); 
    GL11.glVertex2f(200,0+200); 
GL11.glEnd(); 

glFlush(); 

클래스 여기 pastebin.com/YRChp5vB 찾을 수 있습니다 여기 pastebin.com/anpBPsgv

+0

해당 붙여 넣기를 인라인합니다. – genpfault

답변

2

질감에 대한 렌더링이 어두워지지 않습니다. 텍스처를 어둡게 그려야합니다.

GL11.glColor4f(5/255f, 35/255f,70/255f, 1f); 

이렇게하면 색상이 그대로 유지됩니다. 기본적으로 GL은 GL_MODULATE 텍스처 환경 모드를 사용하므로 텍스처 색상에 설정된 색상이 곱 해집니다. 자세한 내용은 this question을 참조하십시오.

+0

아 맞아! GL에 GL_REPLACE를 사용하도록 설정 한 결과, 연결된 다른 질문에서 제안한 바와 같이 끝났습니다. 감사! – user2398809

관련 문제