opengl picking 예제

사용자가 일부 형상을 대화식으로 편집할 수 있도록 허용하는 대부분의 프로그램은 사용자가 편집할 항목 또는 항목 그룹을 선택하는 메커니즘을 제공합니다. 2차원 드로잉 프로그램(예: 텍스트 편집기, 페이지 레이아웃 프로그램 및 회로 디자인 프로그램)의 경우 OpenGL 선택 메커니즘을 사용하는 대신 직접 선택 계산을 수행하는 것이 더 쉬울 수 있습니다. 종종 2차원 개체에 대한 경계 상자를 쉽게 찾고 일부 계층 적 데이터 구조로 구성하여 검색 속도를 높일 수 있습니다. 예를 들어 수백만 개의 사각형이 포함된 VLSI 레이아웃 프로그램에서 OpenGL 스타일을 사용하는 선택 시간이 상대적으로 느려질 수 있습니다. 그러나 사각형이 일반적으로 화면에 정렬될 때 간단한 경계 상자 정보를 사용하면 이러한 프로그램에서 매우 빠르게 선택할 수 있습니다. 코드도 쓰기가 더 간단할 수 있습니다. OpenGL 피킹을 사용하기로 결정한 경우 선택 또는 일반 도면 모드에서 적절한 객체 목록을 쉽게 그릴 수 있도록 프로그램과 데이터 구조를 구성합니다. 이렇게 하면 사용자가 항목을 선택할 때 화면에 항목을 표시하는 데 사용하는 선택 작업에 동일한 데이터 구조를 사용할 수 있습니다. 또한 사용자가 여러 개체를 선택할 수 있도록 허용할지 여부를 고려합니다. 이를 위한 한 가지 방법은 각 항목에 대해 선택 여부를 나타내는 비트를 저장하는 것입니다(그러나 이 방법을 사용하면 선택한 항목을 찾기 위해 전체 항목 목록을 트래버스해야 합니다).

이 검색 속도를 높이기 위해 선택한 항목에 대한 포인터 목록을 유지하는 것이 유용할 수 있습니다. 전체 그림을 그릴 때 선택된 항목(예: 다른 색상 또는 선택 상자)을 다르게 그릴 수 있으므로 각 항목에 대한 선택 비트를 유지하는 것이 좋습니다. 마지막으로 선택 사용자 인터페이스를 고려합니다. 사용자가 다음을 수행하도록 허용할 수 있습니다. 예를 들어 glOrtho()의 좌표 값을 변경합니다. 조명 변수를 변경하거나 조명을 완전히 제거하고 피드백 유형을 GL_3D로 변경합니다.


mid_admin