2013-12-22 6 views
-1

OpenGL의 디스플레이 목록에 정점 배열을 저장할 수 있습니까? 다른 코드에서 내가 그려야하는 표시 목록을 얻었지만 해당 모델의 경계 상자를 알아야합니다. 디스플레이 목록에서 해당 정보를 추출 할 가능성이 있습니까?디스플레이 목록에 저장된 정점 배열 얻기

답변

0

더 이상 사용되지 않는 OpenGL이기 때문에 feedback buffer을 사용해 보셨습니까?

디스플레이 목록을 그리기 전에 렌더링 모드를 GL_FEEDBACK으로 설정 한 다음 모든 꼭지점이 가득 찬 버퍼를 가져올 수 있습니다. 이 기능은 거의 사용되지 않으며 사용되지 않으므로 (변환 피드백은 다른 파이프 라인 단계에서 작동 함에도 불구하고 현대의 동등한 기능이므로) 일부 언어 바인딩에서는이 기능을 사용할 수 없습니다.

불행히도, 피드백 버퍼는 단지 정점 이상을 포함합니다. 여기에는 발생한 모든 래스터 작업 목록이 포함되어 있으므로이 목록을 이해하기 위해 일부 소프트웨어를 작성해야합니다. OpenGL SuperBible은 C에서이 작업을 수행하는 방법이 an example입니다.

다른 점은 정점 위치가 화면 공간에 있다는 것입니다. 원하는대로 작업하려면 오브젝트 공간으로 프로젝트를 역전해야합니다. 너의 본보기. 이는 또한 클리핑되어야하는 모든 정점의 원래 위치가 손실된다는 것을 의미합니다. 그것은 완벽한 해법에서 멀리 떨어져 있지만 해킹이 더 많을지라도 유용 할 수 있습니다.

0

아니요. GL에는 표시 목록 검사가 지원되지 않습니다. DL은 GL이 아니라 사용자를위한 것입니다.

아직까지 DL의 내용을 얻는 이론적 인 가능성이 있습니다. DL 코드를 생성하는 코드가 dll 호출을 추적하고 dlist 상태를 추적하며 정점 데이터를 기반으로 경계 상자를 계산하면 모든 GL 호출을 인터셉트 할 수 있습니다. 이전 chromium open source project은 원칙적으로이를 허용합니다. 그러나이를위한 노력은 엄청나게 높을 것이며 귀하의 문제에 대한 실행 가능한 솔루션이 될지 의심 스럽습니다.