2013-07-06 2 views
0

그래, 그게 문제 야. 현재 게임용 OCX/NPAPI 플러그인을 작성 중이므로 웹 브라우저에서 게임을 실행할 수 있습니다. 현재 구현에서는 SetTimer를 사용하여 내 게임 (플러그인 dll)의 업데이트 및 렌더링을 '틱'하지만 FPS (초당 프레임)는 컴퓨터에서 최대 64 개가 될 수 있습니다. 나는 타이머가 브라우저의 플러그인 처리의 프로세스를 엿볼 수있는 프로세스에 의해서만 호출 될 수 있기 때문에 윈도우 타이머의 문제임을 알았다. 즉, 타이머는 브라우저의 처리 속도보다 빠를 수 없다.응용 프로그램의 프레임 속도를 높이는 방법


그래서 제 질문은

  1. 내가 브라우저 메시지 처리에 의해 제한 64 프레임 속도를 끊거나 타이머 PROC 속도를 높일 수있다?
  2. 또는 게임을 분리 된 스레드로 이동해야하지만 창 메시지 (사용자 입력, 창 크기 조정 등)를 처리하는 방법 및 게임 스레드에서 수신 할 수 있어야합니다. 사전에

감사합니다!

답변

1

당신이 창 플러그인을 사용하는 경우 다음 가장 좋은 방법은 별도의 스레드에서 모든 렌더링과 같은 작업을 수행하는 것입니다. 일종의 threadsafe 큐 또는 스레드를 통해 창 메시지를 전달하기 위해 뭔가를 사용하십시오; 물론 뮤텍스와 재미 있지만, 그렇게 어려운 것은 아닙니다.

당신이 (당신을 위해 많이 단순화 것이다) FireBreath를 사용하는 사용자가 사용할 수있는 FB : SafeQueue 클래스가있는 경우. FireBreath를 사용하지 않으면 부스트가 필요하지만 훔칠 수는 있지만 어쨌든 스레드 안전 메시지 대기열을 만드는 것은 그리 어렵지 않습니다.

모든 게임 논리를 수행하려고하는 주 스레드에 있다면 어쨌든 성능 문제가 발생할 수 있습니다.

창없는 플러그인 인 경우 행운입니다.

+0

"스레드 안전 큐의 일종을 사용하거나 스레드간에 창 메시지를 전달하는 것"- 좀 더 구체적으로 만들 수 있습니까? 다른 스레드로 Windows 메시지를 '리디렉션'하는 방법을 알지 못합니다. 감사! – karlzhang

+0

메시지를 다른 스레드로 "redirect"할 수 없습니다. 자신의 메시지 전달 메커니즘을 구축합니다. Windows 이벤트에 대해 신성한 것은 없습니다. 구조체 만들기, 해당 유형의 구조체를 보유하는 큐 만들기 등 – taxilian

관련 문제