2013-04-14 2 views
-1

glReadPixels()를 사용하여 z 버퍼를 읽을 때 왜 z 버퍼 값이 항상 0입니까?왜 z 버퍼를 읽을 때 glReadPixels()를 사용할 때 z 버퍼 값이 항상 0입니까?

int main() 
{ 
    glReadPixels(0.0,0.0,width,height,GL_DEPTH_COMPONENT,GL_FLOAT,depth_data); 
    for(int i=0;i<10;i++) 
     for (int j=0;j<10;j++) 
      cout<<depth_data[i][j]<<endl; 

    return 0; 
} 
+1

스택 오버플로에 오신 것을 환영합니다. 제목을 넘어서는 설명없이 간단하게 코드를 게시하면이 사이트에 적합하지 않습니다. –

+0

왜 당신은 그것이 무엇이든 기대할 것입니다 - 당신은 아무것도 그려지지 않았고 (심지어 GL 컨텍스트를 만들었습니까?)? –

답변

2

사용자 환경에 맞게 컨텍스트를 설정하지 않았을 것입니다. 할 필요가있는 것은 깊이 버퍼에 쓰기가 가능해야한다는 것입니다 (glDepthMask (GL_TRUE);). 어쨌든 이것은 처음에는 사실입니다. 또한 OpenGL은 깊이 버퍼에 무엇이든 쓸 수 있도록 깊이 테스트가 필요합니다. 깊이 테스트를 수행하지 않으려면 glDepthFunc에 대한 호출을 추가하여 항상 깊이 값을 작성하십시오.

glEnable(GL_DEPTH_TEST); 
glDepthMask(GL_TRUE); 
glDepthFunc(GL_ALWAYS); // Change this to whatever kind of depth testing you want 
glDepthRange(0.0f, 1.0f); 

픽셀 데이터를 읽은 후 OpenGL 오류가 있는지 확인할 수도 있습니다. 어쩌면 깊이 버퍼도 없습니까?

나는이 도움이되기를 바랍니다.

관련 문제