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 또는 설명서에는 유용한 정보가 많지 않습니다. 당신의 도움이
이 시도했지만 응용 프로그램이 스크립트 끝날 때까지 기다립니다. 하지만 그 사이에 단계를 표시하고 싶습니다. glflush 대신 glFinish를 시도했지만 동일한 문제가 발생했습니다. – Marcel
@Marcel 왜 같은 문제가 발생 했습니까? –
끝 부분에 표시되지만 그 사이에 다시 그리기가 있어야합니다. 출력이 하나뿐입니다. 나는 그것이 빨리 달리는지를 제어하기 위해 수면 기능으로 테스트했다. – Marcel