2009-03-06 2 views
2

저는 iPhone 개발에 익숙하지 않습니다. 다음과 같이 게임 루프 설정이 있습니다. 기능을 렌더링 내이iPhone Gameloop에서 별도의 스레드에서 업데이트 렌더링

(void)GameTick 
{ 
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; 

    CGRect wrect = [self bounds]; 

    while(m_running) 
    { 
    [self drawRect: wrect]; 
    } 

    [pool release];  
} 

같은

(void)CreateGameTick:(NSTimeInterval) in_time 
{ 
    [NSThread detachNewThreadSelector:@selector(GameTick) toTarget:self withObject:nil]; 
} 

내 기본적인 게임 틱/렌더링 외모가 호출됩니다. 그러나 아무 것도 그려지지 않습니다. (Core Graphics를 사용하여 파생 된 UIView에서 일부 선을 그립니다.)

타이머를 통해 업데이트를 호출하면 모두 잘 처리됩니다.

스레드를 통해 렌더링 할 때 렌더링이 실패하는 이유를 말해 줄 수 있습니까? 스레드를 통해 작동하도록 할 수 있습니까?

감사 리치

+0

특정 질문에 대한 답변을 모르겠지만 [cocos2d-iphone] (http://code.google.com/p/cocos2d-iphone/)을 확인하십시오. 훌륭한 2D 게임 프레임 워크이며 사이트에서 여러 코드 샘플을 찾을 수 있습니다. –

답변

4

당신은 (잘 안) -drawRect 호출 할 수 없습니다 : 직접. 대신 -setNeedsDisplay; 다음 번에 이벤트 루프를 통해보기가 업데이트됩니다. 별도의 스레드에서 실행하면 performSelectorOnMainThread :를 사용해야 할 수도 있습니다.

관련 문제