2010-03-07 3 views
3

OpenGL을 처음 사용했습니다. OpenGL 표시 목록을 알기 전에 programm을 작성했습니다. 지금까지는 코드에 여러 가지 'gl'줄이 포함되어 있지 않기 때문에 코드를 악용하는 것은 꽤 어렵습니다. 그래서glCallList는 성능을 얼마나 향상 시키나요?

그것은 정적 구조에 대한 의존
+0

수락 한 답을 수정하는 것이 좋습니다. 정말 현대적인 GL 기능을 사용하는 경우 표시 목록을 사용하면 별 도움이되지 않습니다. 그러나 비용은 메모리를 현명하게 소모합니다. – Bahbar

+0

Bahbar, 발언에 감사드립니다. 나는 VBO를 점검 할 것이지만, 필자가 알고있는 한 새로운 버전에서만이 기능을 포함하고있는 pyopengl을 사용하고있다. – Alex

답변

4

, 그것은 꽤 많은 도움이 될 수 있습니다 .. 내가 성능을 잃은 얼마나 궁금하지만, 디스플레이 목록은 VBOs 찬성 (버텍스 버퍼 오브젝트)와 유사한에서 사용되지되고있다 기하학 데이터를 카드에 업로드 한 다음 해당 데이터를 사용하는 그리기 호출을 다시 발행하는 기술.

표시-목록 (어떤이는 OpenGL 1.0에 좋은 아이디어) 모든 코너 케이스에 제대로 구현하기 어려운 것으로 밝혀졌다 있고, 더 간단한 방법에 대해 단계적으로되고있다. 당신이 캐시 모든 형상 데이터 경우

그러나, 모든 수단에 의해, 목록 확인합니다. 그러나 VBO는 미래이므로 배워야한다고 제안합니다.

1

통화 목록이 성능을 향상시키고 있습니다. 사용자 그래픽 카드에 메모리가 충분하고 통화 목록 (대부분)을 지원하는 경우 :

그래픽 카드에 데이터를 넣는 속도는 여러 가지 "성능 병목 현상"이 있습니다. OpenGL 함수를 호출하면 CPU 또는 GPU (그래픽 카드의 프로세서)에서 계산됩니다. GPU는 그래픽 작업에 최적화되어 있지만 CPU는 데이터를 GPU로 보내야합니다. 이 작업에는 많은 시간이 필요합니다.

는 통화 목록을 사용하는 경우; 가능한 경우 데이터는 (조기에) GPU로 전송됩니다. 그런 다음 호출 목록을 호출하면 CPU가 데이터를 GPU로 푸시 할 필요가 없습니다.

거대한 성능 향상 당신이 그들을 사용하는 경우.

+0

어떤 데이터가 있습니까? CallList가 일반적으로 GPU에 푸시하는 유일한 데이터는 정점 데이터입니다. 그리고 당신이 당신의 주문을 올바르게 지키면. 그리고 마커스 (Marcus)가 말했듯이 VBO로 GPU에 데이터를 보낼 수있는 방법이 이미 있습니다. 그들이 그 마술이라면 더 이상 사용하지 않을 것입니다. – Bahbar

1

코너 케이스 : 는 "카드에 밀어 것은"비용이 많이 드는 libgl-> 네트워크 -> xserver-> libgl 여행을 포함하기 때문에 GLX가 다음 큰 승리 할 수 ​​있습니다 목록을 표시 원격 통해 응용 프로그램을 실행하려는 경우.

관련 문제