У меня очень странный глюк в моем приложении ipad. Это очень просто: я просто использую обработчик «touchhesMoved», чтобы нарисовать линию между двумя точками. Поскольку я хотел бы, чтобы строки оставались на экране, я не называю «glClear» в моей функции рисования, но по какой-то причине некоторые из строк просто выпадают, и это кажется совершенно случайным. Еще страннее, он отлично работает в симуляторе. Кто-нибудь знает, почему это может быть? Я включил мои прикосновения и рисовал процедуры.GL_LINES рисуется беспорядочно (iPad + OpenGL ES1)
Большое спасибо!
Пит
-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
NSSet *allTouches = [event allTouches];
switch ([allTouches count])
{
case 1:
{ //Single touch
} break;
case 2:
{ //Double Touch
UITouch *touch1 = [[allTouches allObjects] objectAtIndex:0];
CGPoint location1 = [touch1 locationInView: [touch1 view]];
UITouch *touch2 = [[allTouches allObjects] objectAtIndex:1];
CGPoint location2 = [touch2 locationInView: [touch2 view]];
[self drawLineWithStart:location1 end:location2];
} break;
default:
break;
}
}
- (void)drawLineWithStart:(CGPoint)start end:(CGPoint) end
{
[EAGLContext setCurrentContext:context];
glBindFramebufferOES(GL_FRAMEBUFFER_OES, viewFramebuffer);
GLfloat lineVertices[] =
{
(start.x/(768.0/2.0)) - 1.0, -1.5 * ((start.y/(1024.0/2.0)) - 1.0),
(end.x/(768.0/2.0)) - 1.0, -1.5 * ((end.y/(1024.0/2.0)) - 1.0)
};
glDisable(GL_TEXTURE_2D);
// Render the vertex array
glVertexPointer(2, GL_FLOAT, 0, lineVertices);
glDrawArrays(GL_LINE_STRIP, 0, 2);
glBindRenderbufferOES(GL_RENDERBUFFER_OES, viewRenderbuffer);
[context presentRenderbuffer:GL_RENDERBUFFER_OES];
}
Большое спасибо, что сработало отлично! – Pete