E D R , A S I H C RSS

하드웨어에따른프로그램의속도차이해결

이페이지는?

  • 우리가 만든 프로그램이 어떤 하드웨어에서던지 일정한 속도로 돌아가기를 바라는 경우가 있다. 특히 게임을 만드는 경우가 대표적인 예이다. 그러한 경우 어떠한 해결책이 있는지 아 보면 좋을거 같다. 여기에 그 해결책들을 적어 보고 잘못된 방법은 고치기도 하면서 좋은 방법을 찾으면 좋겠다.

사례

  • 3DAlca프로젝트에서 이 게임을 펜티엄3 800 지포트2 MX 에서 돌렸을때는 정상 속도로 게임이 돌아 가는데 펜티엄 4 1.8GA Raden 9000 pro 에서는 거의 제어할 수 없는 속도가 나온다.

해결책

  • 아래는 제가 조사해본 내용인데 추상적이거든여.. 실제 사용예 같은거 있으면 자료 올려 주시면 좋겠습니다.
    • Game 의 Tick 에 해당되는 함수를 idle에 넣지 말고 타이머마다 화면 그려주는 함수를 실행한다.
    • 스레드 & 1초 쉬고 (이건 HiPerformanceTimer 관련 함수를 이용하는 방법)
      • 작동하는 속도를 피드백 받아서 프레임을 줄여 제작한다
    • 타이머를 이용해서 시간에 따라 움직이도록 한다.
      • 이걸로 해결 봤습니다. MFC에서는 타이머를 써봤는데 API에서는 어떻게 쓰는지 몰라서 못했었는데, 정직이형에게 물어봐서 게 되어서 위 문제를 해결~
    • hardware independent하게 게임속도를 유지하려면 매프레임 그릴때마다 이전프레임과의 시간간격을 받아와서 거기에 velocity를 곱해 position을 update하는 식으로 해야한다. 타이머를 하나 만들어 보자.

  • 궁금한게 있는데, MFCStudy_2001/MMTimer 로 안된단 말이야? 가장 빠른걸로 고 있어서, 동작 제어는 타이머단에서 하고, loop에서 열심히 그림 그려서 fliping만 해주면 되지 않을까? 낮에는 경황이 없어서, 그냥 멀티미디어 타이머 이야기만 했는데, winamp 같은 시간에 의존적인 프로그램들도 이 타이머를 사용해서 말이지. --neocoin

  • 허허.. 인스톨 과정에 재컴파일을 넣으면 되지 않을까 ;; 소스배포! 그것이야말로 남자(?)의 로망.. --zennith
  • 비슷한건데.. 스레드와 timer 를 같이 써서 해결하기도 하지.. -_-; 아는 형 중에 그렇게 하던데.. dx 쓸때.. source 는 모르겠고.. mfc 에서 dx 쓸때 그렇게 한다고 하더라.. 뭐 네가 말하는 문제의 해결책이 될듯 하기도 하고.. -- erunc0



Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:31:29
Processing time 0.0167 sec