2013-11-22 2 views
0

말하자면, glVertex3f로 3 점을 (0,0,0), (9,0,0) 및 (10,0,0) 에 그립니다. 경계 상자 영역 (2, -1, -1)의 모든 Vertex3f 점을 (15, 1, 1)로 지우고 마지막 두 점을 포함해야합니다.OpenGL에서 3D 영역에서 그려진 프리미티브를 지우는 방법

OpenGL에서 어떻게합니까?

+1

OpenGL은 과거의 모든 그림을 멋지게 무시합니다. 모니터에 보내지는 픽셀 배열 (프레임 버퍼라고 함) 만 유지합니다. 'GL_SCISSOR' 또는'GL_STENCIL' 테스트를 사용하여 도면을 제한 할 수는 있지만 이전에 그려진 것에 영향을주지는 않습니다. 일반적으로 장면을 변경하면 언제든지 모든 것을 지우고 시작해야합니다. – bcrist

답변

2

OpenGL 외부에서 도면을 관리하십시오. IE 이것을 달성하기 위해 OpenGL을 사용하지 마십시오. OpenGL은 데이터를 그리는 데 사용되며 추적하지 않습니다. 특정 객체를 없애고 싶다면 OpenGL에게 그 객체를 그리라고 말하지 마십시오. 효율적으로 교차점을 찾기 위해 다양한 공간 분할 데이터 구조가 있습니다.

  • 순진한 방법은 장면의 모든 지점이 그리기 전에 해당 지역 밖에 있는지 확인하는 것입니다.

  • 더 좋은 방법은 기각해야 할 비교 횟수를 기하 급수적으로 줄이려면 kd -tree 또는 octree를 사용하는 것입니다.

관련 문제