2010-08-17 5 views
2

시뮬레이션의 종류를 만들고 싶습니다. 물고기/상어/오카의 특정 위치를 표시해야합니다 (실제 위치는 아니며 무작위로 설정됩니다). 시뮬레이션을 통해 시작 상황을 표시 할 수 있습니다.보기를 다시 그리는 방법? (OpenGl)

glOrtho(0, breite, 0, hoehe, 0, 1); 
glClearColor(0, 0, 1, 0); 
glClear(GL_COLOR_BUFFER_BIT); 

//Besetzen der Felder 
srand(time(0)); 
NSMutableArray* Wator = [NSMutableArray new]; 
for(int y = 0; y < hoehe; y++){ 
    for(int x = 0; x < breite; x++){ 
     NSInteger r = rand() % 100; 
     if (r < fishPer) { 
      [Wator addObject:[[[Fish alloc]init]autorelease]]; 
      drawAFish(x,y); 

     }else { 
      if (r < sharkPer + fishPer) { 
       [Wator addObject:[[[Shark alloc]init]autorelease]]; 
       drawAShark(x, y); 
      }else { 
       if (r < orcaPer + sharkPer + fishPer) { 
        [Wator addObject:[[[Orca alloc]init]autorelease]]; 
        drawAOrca(x, y); 
       } 
      } 
     } 
    } 
} 
glFlush(); 

잘 작동합니다. drawAFish/drawAShark ... 간단한 쿼드 그릴 :

static void drawAOrca (int x, int y) 
{ 
    glColor3f(1.0f, 1.0f, 0.0f); 
    glBegin(GL_QUADS); 
    { 
     glVertex3i(x, y, 0); 
     glVertex3i(x+1, y, 0); 
     glVertex3i(x+1, y+1, 0); 
     glVertex3i(x, y+1, 0); 
    } 
    glEnd(); 
} 

그래서 내 질문은 : 어떻게 장면을 다시 그릴 수 있습니까?

Google 또는 설명서에는 유용한 정보가 많지 않습니다. 당신의 도움이

답변

2

마르셀에 대한

덕분에 그냥 화면을 지우고 다시 모든 것을 그립니다. 그것은 표준 방법입니다.

+0

이 시도했지만 응용 프로그램이 스크립트 끝날 때까지 기다립니다. 하지만 그 사이에 단계를 표시하고 싶습니다. glflush 대신 glFinish를 시도했지만 동일한 문제가 발생했습니다. – Marcel

+0

@Marcel 왜 같은 문제가 발생 했습니까? –

+0

끝 부분에 표시되지만 그 사이에 다시 그리기가 있어야합니다. 출력이 하나뿐입니다. 나는 그것이 빨리 달리는지를 제어하기 위해 수면 기능으로 테스트했다. – Marcel