2012-10-07 2 views
0

가능한 중복 :이 프로그램에 올 때
What's the usual way of controlling frame rate?프레임 속도를 설정 하시겠습니까? 이것은 좋은 생각입니까?

나는 아마추어 해요,하지만 난이 처리 것들의 효율적인 방법이 있는지 물어 싶어.

지금 당장 내 프로그램이 모든 단계마다 자동으로 업데이트되지만 프로그램을 더 작은 프레임 속도로 나눕니다. 나의 현재 아이디어는 매 30 틱 정도 (예를 들어)마다 게임이 자동으로 업데이트되는 메인에 시계를 설정하는 것입니다. 그러나, 그 시간의 슬롯 (예 : 매 10 초) 내에서 프로그램의 다른 부분을 개별적으로 업데이트하려는 경우, 해당 기간이 끝날 때 화면을 업데이트하는 프로그램이 필요합니다. 나는 이것이 "압력"(일부가 있다고 가정)의 일부를 완화하는 데 도움이 될 것이라고 생각했습니다.

+0

"30 tick마다"는 무엇을 의미합니까? 뭐라구? –

+0

난 그냥 실행중인 프로그램의 단계를 의미합니다. – user1703993

답변

2

나는 그렇게 가지 않을 것이다. 가능한 한 자주 (예 : while (true) 루프에 넣으십시오.) 게임/화면을 가능한 한 자주 업데이트하기 위해 시작할 때 특히 더 좋고/더 쉽고/깔끔합니다. 그런 다음 각 반복, 경과 시간을 파악하고 그에 따라 사용하십시오. (예 : 경과 된 20ms마다 1 픽셀 씩 객체 이동)

이것이 더 좋은 출발점 인 이유는 정확하게 30fps를 보장하기 어렵고 게임이 이상하게 작동한다는 것입니다 (예 : 느린 컴퓨터는 15fps 만 끌어 올 수 있습니다. 개체가 두 배 속도가되는 것을 원하지 않습니다.) 드리프트/개별 느린 프레임 등은 말할 것도 없습니다.

+0

하지만 메인 업데이트 루프 만 바꾸고 있습니다. 전체 프로그램이 루프를 중심으로 돌아 가기 때문에 시스템이 매 20ms마다 자체를 업데이트해야한다는 것을 간단하게 선언하는 것이 쉽습니다. 그러나 한 걸음 더 나아갈 것입니다. 20 ms 동안 시스템의 특정 하위 집합을 업데이트하고 마지막에 화면을 업데이트하려고합니다. – user1703993

+0

당신은 아마 그것을 생각하고 있습니다. 특히 시작할 때 가장 단순한 작업을 수행하십시오. 예 : 물리학을 프레임 업데이트와 같은 루프에 넣으십시오. – Heptic

+0

유일한 단점은 타이트 루프 레코딩 CPU에있을 수 있다는 것입니다. – andre