2014-06-08 14 views
0

GLEW를 사용하여 MinGW Windows Code :: Blocks 12.11에서 SDL/OpenGL 프로젝트를 수행하고 있습니다. 2D 프레젠테이션 렌더링을 구현하려고하는데, 결국 일부 조각 셰이더 효과를 시도 할 수 있습니다. 나는 프레임 버퍼 오브젝트의 텍스처 (라고 fbo_texture)에 장면을 렌더링하고 시도하고 전체 화면에 그 렌더링하는 경우, 그러나OpenGL 프레임 버퍼 오프 스크린 렌더링

Scene Normal

: 여기

기본 프레임 버퍼에 렌더링 된 장면입니다 쿼드,이 얻을 :

Scene with Framebuffer Object

이미지가 미러링과 녹색, 이성을 상실 나타납니다. Framebuffer에 대한 렌더링이 올바르게 작동하고 있음을 확신합니다. 그러나 저의 삶에 왜 텍스처가 왜곡되어 나타나는 지 알 수 없습니다.

다음은 glBindFramebufferEXT (GL_FRAMEBUFFER_EXT, 0)를 호출 한 후 fbo_texture를 텍스처 쿼드로 렌더링하는 방법입니다. 프로그램을 초기화 할 때 glMatrixMode (GL_MODELVIEW) 및 glOrtho (0, screen_width, screen_height, 0, 0, 1) 사용하고 있습니다. Screen_width가 400이고 screen_height 난 정말 어떤 도움을 주셔서 감사합니다 (400)

glEnable(GL_TEXTURE_2D); 
glBindTexture(GL_TEXTURE_2D, fbo_texture); 
glBegin(GL_QUADS); 
    x1= 0.5; 
    x2= 400.5; 
    y1= 0.5; 
    y2 = 400.5; 
    glTexCoord2f(0.0f, 0.0f); glVertex2f(x1, y1); 
    glTexCoord2f(1.0f, 0.0f); glVertex2f(x2, y1); 
    glTexCoord2f(0.0f, 1.0f); glVertex2f(x2, y2); 
    glTexCoord2f(1.0f, 1.0f); glVertex2f(x1, y2); 
glEnd(); 


glDisable(GL_TEXTURE_2D); 

, 난 더 이상 정보를 제공해야하는 경우 알려 주시기 바랍니다.

+0

도 - 깊이 버퍼를 전혀 사용하지 않았습니다. 2D 렌더링에 문제가 있습니까? – Luminaire

+1

아니요, 2D 렌더링을위한 심도 버퍼가 필요하지 않습니다. 엄밀히 말하면 형상을 완벽하게 정렬 할 수 있다면 기술적으로 3D 렌더링을 필요로하지 않습니다 ... 그러나 객체를 교차하거나 (불필요하게 채우기 속도를 낭비하므로) 그리기를 완벽하게 정렬하지 못하는 경우가 많이 있습니다 뒤에서 앞으로. –

+0

오 좋은 항상 내 머리 뒤에서 그게 문제인지 나를 걱정 – Luminaire

답변

2

이것은 유일한 문제는 아니지만 표시되는 부분에서 두 개의 정점이 텍스처 좌표로 바뀝니다. 4 개 꼭지점의 제 3 좌표 (x2, y2)으로, 오른쪽 상단, 그래서 텍스처가 (1.0f, 1.0f)을 조정해야한다 : 당신은 또한 당신이 glMatrixMode(GL_MODELVIEW)glOrtho()를 호출 할 말을하는지

glTexCoord2f(0.0f, 0.0f); glVertex2f(x1, y1); 
glTexCoord2f(1.0f, 0.0f); glVertex2f(x2, y1); 
glTexCoord2f(1.0f, 1.0f); glVertex2f(x2, y2); 
glTexCoord2f(0.0f, 1.0f); glVertex2f(x1, y2); 

. glOrtho()은 투영 행렬을 설정하므로 일반적으로 glMatrixMode(GL_PROJECTION) 다음에 호출해야합니다.