2011-08-01 3 views
0

에서 제대로 작동하지 않습니다, 나는 해결책을 찾을 수 없습니다. 내가 렌더링 기능이 방법을 사용식 코멘트 내가 얼마 동안이 문제를 가지고 OSX

//Initialize buffers 
    glGenBuffers(1, &primaryBuffer); 
    glBindBuffer(GL_FRAMEBUFFER, primaryBuffer); 

    glGenRenderbuffers(1, &depthBuffer); 
    glBindBuffer(GL_RENDERBUFFER, depthBuffer); 
    glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH_COMPONENT, Statics::ScreenWidth, Statics::ScreenHeight); 
    glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, depthBuffer); 

    glGenTextures(1, &colorTexture); 
    glBindTexture(GL_TEXTURE_2D, colorTexture); 
    glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); 
    glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR); 
    glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); 
    glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); 
    glTexParameteri(GL_TEXTURE_2D, GL_GENERATE_MIPMAP, GL_TRUE); 
    glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB8, Statics::ScreenWidth, Statics::ScreenHeight, 0, GL_RGB, GL_UNSIGNED_BYTE, NULL); 

    glGenTextures(1, &depthTexture); 
    glBindTexture(GL_TEXTURE_2D, depthTexture); 
    glTexImage2D(GL_TEXTURE_2D, 0, GL_DEPTH_COMPONENT32, Statics::ScreenWidth, Statics::ScreenHeight, 0, GL_DEPTH_COMPONENT, GL_UNSIGNED_BYTE, NULL); 

    glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, depthBuffer); 
    glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, colorTexture, 0); 

    int res = glCheckFramebufferStatus(GL_FRAMEBUFFER); 
    if (res == GL_FRAMEBUFFER_COMPLETE) 
    { 
     printf("GOOD!\n"); 
    } 

    glBindFramebuffer(GL_FRAMEBUFFER, 0); 

: 여기

나는 프레임 버퍼 초기화 여기 일이되어 무엇

glBindFramebuffer(GL_FRAMEBUFFER, primaryBuffer); 
glViewport(0, 0, Statics::ScreenWidth, Statics::ScreenHeight); 
glClear(GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT); 

SetCamera(); 
DrawScene1(); 

glBindFramebuffer(GL_FRAMEBUFFER, 0); 

glViewport(0, 0, Statics::ScreenWidth, Statics::ScreenHeight); 
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); 
SetCamera(); 
DrawScene2(); 

는 "장면 l"가 첨부 된 프레임 버퍼에 렌더링되는 것입니다 조직. 그리고 "scene2"가 화면에 나타나야합니다. "scene2"가 화면에 표시하지 않습니다,하지만 난 렌더링 프레임 버퍼 텍스처를 사용하는 경우,이 나타나는 것입니다 : 는 Looks like some GPU memory garbage! :)

는 사람이 뭐가 잘못 말해 줄래? 나는 DrawScene1()가 DrawScene2()를 생산하고있다 무엇의 일부에 렌더링한다 동안 DrawScene2는(), 전체 장면을 렌더링해야 함을 이해 한 내용을 당신이 쓴에서

+0

'depthTexture'의 점은 무엇인가? –

+0

정확하게 문제가 무엇인지 말하지 않았습니다. 결과는 어떻게 생겼을 까? 문제는 텍스처의 사각형입니까? FBO와 함께'GL_GENERATE_MIPMAP'을 사용하지 마십시오. FBO 확장이 glGenerateMipmaps 함수를 도입 한 이유가 있습니다. –

+0

출력은 문 내부의 문이라고 가정합니다. – user686776

답변

2

. 당신이 어떤 세부 사항 (또는 전체 코드) DrawScene2()의 멀리 부여하지 않았으므로

, 나는 단지 여기 추측을 할 수 있습니다 : 문제는 DrawScene2됩니다(). 이지기 전에 여기에 소스를 렌더링 당신이) DrawScene1 (의 결과를 사용하고 있기 때문에, 당신은 아마 대신 즉, 일반 텍스처로 치료 적절한 세계와 질감을 설정, 렌더링 타겟에 전체 FBO를 때렸다는 좌표 렌더링 (DrawScene1()이 생성 한 것으로 "그리기"를 원하는 DrawScene2()에 의해 렌더링 된 문 경계). 당신이 renderbuffer 대신하여 깊이 버퍼 텍스처를 사용하는 경우

관련 문제