나는 이와 비슷한 비슷한 것을 알고 있지만 이전에 스크롤을위한 옵션이 아닌 "한 번에 전체 화면을 다시 그리지 마라"는 답변을 찾을 수 없었습니다. 2D 사수입니다. 비록 내가 필요하지 않을 때 전체 화면을 업데이트하지 않더라도 플레이어는 어쨌든 이동하지 않으면 프레임 속도를 알지 못합니다. 전체 화면을 다시 그려야 할 때입니다 ...파이 게임/SDL 낮음 Framerate at HD
그래서 게임이 렌더링되는 방식에 따라 전체 게임이 480 * 270 표면 (renderLayer)에 그려지며, 렌더링 기능의 끝에서 디스플레이가 뒤집히기 전에 스크린 크기까지 스케일이 조정됩니다.
480 * 270 창에서 게임을 실행하면 수백 개의 프레임 속도가 발생하지만 게임이 1080p에서 실행되자 마자 45 ~ 60fps를 얻을 수 있습니다. 전체 코드에서 변경되는 부분은 각 업데이트 프레임이 끝날 때 확장되어 화면에 버퍼가 넘치게되므로 나머지 코드는이 성능 저하와 관련이 없음을 명심하십시오.
표시
은과 같이 초기화한다 : 그것은 기본 드라이버보다 아주 약간 더 높은 프레임 속도를 산출하기 때문에os.environ['SDL_VIDEODRIVER'] = 'windib'
pygame.init()
display = pygame.display.set_mode((0,0),FULLSCREEN|DOUBLEBUF|HWSURFACE)
나는 windib을 사용했다.
렌더링이 끝나면 모든 객체가 renderLayer에 blit되었습니다.
display.blit(pygame.transform.scale(renderLayer,display.get_size()),(0,0))
pygame.display.flip()
clock.tick()
print(clock.get_fps())
는 특히 동기화 해이 중요 멀티 플레이어에서 오른쪽 속도로 모든 것을 유지 유용, 나는 보통 clock.tick (60)를 사용 명심,하지만 난처럼 시계두고 프레임 속도 테스트. tick() 그래서 성능 변화를 정확하게 나타낼 수 있습니다.
고해상도에서 프레임 속도를 높이거나 다른 방법으로 디스플레이를 확장하는 방법이 있다면 누구에게 알 수 있습니까? 디스플레이에서 OpenGL을 사용하는 것에 대해 들어 봤지만, 실험에서 말할 수있는 표준 파이 게임 표면에서 더 이상이 표면에 블리딩을 할 수 없습니다.
죄송합니다. 게시 된 코드가 매우 짧지 만 코드 게임이 2000 회 이상인 경우 모든 사람의 시간을 저해상도와 고해상도의 프레임 속도에 차이가 나는 코드로 낭비하고 싶지 않습니다. 게임 루프의 나머지 기능에서 참조되거나 전혀 사용되지 않습니다. 모든 것이 실제로 프레임을 그리는 데 renderLayer를 사용합니다.
시간을내어 질문에 답해 주신 모든 분들께 미리 감사 드리며,이 사이트에 대한 질문이 너무 구체적 인 경우 사과드립니다. 나는 어디에서 물어야할지 모르겠다.