2009-08-02 3 views
2

현재 파이 게임으로 작성된 게임 엔진에서 작업 중이며 OpenGL 지원을 추가하고 싶습니다.PyOpenGL + 파이 게임이 전체 화면에서 60FPS를 초과했습니다.

저는 파이 게임과 OpenGL을 함께 작동시키는 방법을 알아보기위한 테스트를 작성했으며 윈도우 모드에서 실행될 때는 150 ~ 200fps로 실행됩니다. 내가 전체 화면을 실행할 때 (창을 설정할 때 FULLSCREEN 플래그를 추가 한 것 모두), 60fps로 떨어집니다. 필자는 훨씬 더 많은 드로잉 기능을 추가하여 성능 저하가 큰지 여부를 확인했지만 항상 60fps로 실행되었습니다.

OpenGL에게 전체 화면을 실행 중임을 알리는 데 필요한 추가 작업이 있습니까? 아니면 OpenGL의 제한 사항입니까?

(I Windows XP에서 실행하고)

+0

(Windows, Linux/X11 등) 어떤 시스템을 실행하고 있습니까? –

답변

7

설명대로, 이는 display.flip()을 호출하여 화면을 업데이트 할 때 Pygame이 수직 회귀를 기다리고 있기 때문일 수 있습니다. Pygame display documentation 메모로 HWSURFACE 또는 DOUBLEBUF 플래그를 사용하여 디스플레이 모드를 설정하면 display.flip()은 버퍼를 스왑하기 전에 수직 리트 렉션을 기다립니다.

솔직히 말해서 (벤치마킹과는 별도로) 화면의 재생 빈도보다 빠른 프레임 속도를 얻으 려하지 않는 이유가 없습니다. 화면이 60 fps로만 표시 될 수 있으므로 귀하 (귀하의 게임을 즐기는 사람들)는 속도 나 성능면에서 차이를 느낄 수 없습니다. 또한 수직 리트 렉션과 동기화하지 않으면 screen tearing을 얻을 수있는 좋은 기회입니다.

1

이는 V-Sync 문제인가? 구성 또는 환경에 대한 어떤 것에서 최대 프레임 속도를 모니터의 화면 주사율로 제한 할 수 있습니다.

0

전체 화면 모드와 창 모드 사이를 전환 할 때 clock.tick()을 변경하지 않으면 거의 확실하게 vsync 문제입니다. LCD를 사용 중이라면 100 % 확실합니다.

불행히도 v-sync는 SDL, PyPengl, 디스플레이 서버 및 비디오 드라이버를 포함한 여러 장소에서 처리 할 수 ​​있습니다. 창을 사용하는 경우 테스트 할 nvidia 제어판의 vsync 토글을 조정할 수 있으며 Linux의 nvidia 설정에도 무언가 이상이있을 수 있습니다. 다른 제조업체의 드라이버도 비슷한 설정을 가지고 있다고 추측 할 수 있습니다.

+0

"changin clock.tickf()"는 무엇을 의미합니까? 또한 컴퓨터와 함께 제공된 그래픽 카드를 사용하고있어서 vsync 설정에 액세스 할 수 없다고 생각합니다. OpenGL로 할 수있는 방법이 있습니까? –

+0

clock.tick()은 화면 다시 그리기 빈도를 제어하기위한 파이 게임 메커니즘입니다. http://www.pygame.org/docs/ref/time.html은 문서이며 http://www.pygame.org/docs/tut/chimp/ChimpLineByLine.html을 사용하는 예와 여기에 있습니다. – Pmc

+0

@ pygame 구현 문제라면 FULLSCREEN 상태에 관계없이 결과가 균일하지 않습니까? – Pmc

관련 문제