2010-08-17 3 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 ... сделать простой Quad:

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

Я пробовал это, но когда приложение ждет окончания скрипта. Но я хочу показать шаги между ними. Я также попробовал это с glFinish вместо glflush, но та же проблема возникла. – Marcel

+0

@Marcel Какая же проблема возникла? –

+0

, что в конце отображается, но между ними должна быть перерисовка. Я получаю только один результат. Я тестировал его с функцией сна, чтобы контролировать, если он работает быстро. – Marcel

Смежные вопросы