2016-12-14 1 views
1

폐색 쿼리에 관한 문제가 발생했습니다. 필자의 경우 쿼리 결과는 항상 예상보다 커 보인다. 예 : 렌더링에 1024 * 1024 해상도를 사용하지만 장면에있는 객체의 쿼리 결과는 2085029 (> 1024 * 1024)입니다. 사용하드웨어 폐색 쿼리 결과가 정확하지 않은 것 같습니다.

쿼리 방법은 GPU 보석Chapter 29

 glColorMask(GL_FALSE, GL_FALSE, GL_FALSE, GL_FALSE); 
     glDepthMask(GL_FALSE); 
     glBeginQuery(GL_SAMPLES_PASSED, occlusionQuery[0]); 

     mesh->Render(); 

     glEndQuery(GL_SAMPLES_PASSED); 
     glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE); 
     glDepthMask(GL_TRUE); 
     glGetQueryObjectuiv(occlusionQuery[0], GL_QUERY_RESULT, &screenFragmentCount[0]); 

누군가가 도와 드릴까요에서입니까?

답변

4

occlusion query은 얼마나 많은 픽셀이 테스트를 통과했는지 알려주지 않습니다. 얼마나 많은 ''이 테스트를 통과했는지 알려줍니다 (정확하게는 "샘플").

하나의 삼각형을 그리고 그 앞에 삼각형을 그려 넣으면 이전 삼각형이 나중 삼각형으로 가려 지더라도 오 클루 젼 쿼리는 두 개체의 조각을 계산합니다. 삼각형은 순서에 따라 래스터 화됩니다. 따라서 이전 삼각형을 다루는 이후 삼각형은 오 클루 전 쿼리 수가 부딪 힐 때까지 래스터 화되지 않았습니다. 삼각형이 가장 가까운 곳에서 먼 곳으로 렌더링되는 경우에만 이와 같은 자기 폐색이 계산됩니다.

+0

감사합니다. '픽셀'과 '샘플'이 섞여있는 것 같습니다. 따라서 객체의 픽셀 수를 얻으려면 어떻게해야합니까? 비슷한 검색어 방법이 있습니까? ;) – bitxue

관련 문제