cómo hacer que ccdrawline dibuje líneas más suaves en cocos2d

Trato de hacer un juego de rastreo de dedos usando cocos2d.

Muevo mi dedo para escribir un alfabeto, el resultado es este:

http://www.freeimagehosting.net/m39l6

el código fuente:

-(void)ccTouchMoved:(UITouch *)touch withEvent:(UIEvent *)event{
    CGPoint touchLocation = [self convertTouchToNodeSpace:touch];
    CGPoint oldTouchLocation = [touch previousLocationInView:touch.view];
    oldTouchLocation = [[CCDirector sharedDirector]convertToGL:oldTouchLocation];
    oldTouchLocation = [self convertToNodeSpace:oldTouchLocation];

    NSValue *oldVal = [NSValue valueWithCGPoint:oldTouchLocation];
    NSValue *val = [NSValue valueWithCGPoint:touchLocation];
    [trails addObject:oldVal];
    [trails addObject:val];

}

método de dibujo:

-(void)draw{
    for (int i=0; i<trails.count-1; i++) {
           origin = ((NSValue *)[trails objectAtIndex:i]).CGPointValue;
           destination = ((NSValue *)[trails objectAtIndex:i+1]).CGPointValue;
           ccDrawLine(origin, destination); 
    }

}

Probé glEnable (GL_LINE_SMOOTH). pero eso no funciona en el dispositivo.

¿alguna idea de cómo arreglar las partes marcadas con un círculo rojo?

THX.

preguntado el 02 de julio de 12 a las 10:07

1 Respuestas

El ancho de línea gl que está utilizando es mayor que el máximo permitido en el iPhone. Esto es lo que sucede cuando excedes ese número, obtienes esas extrañas formas positivas. Lo que debe hacer en su lugar es dibujar un sprite continuamente como un pincel usando CCRenderTexture. Lea este tutorial, en particular la parte sobre dibujar bocetos.

http://www.learn-cocos2d.com/2011/12/how-to-use-ccrendertexture-motion-blur-screenshots-drawing-sketches/#sketching

Respondido 02 Jul 12, 23:07

bueno, si dibujo un sprite continuamente y muevo mi dedo rápidamente, esto es lo que sucederá: freeimagehosting.net/74pqm - Ignacio Erwin

Sí, debe interpolar sobre las diferentes ubicaciones táctiles, dibujando puntos en un intervalo establecido. - ben trengrove

sí, probé la interpolación catmull-rom y el resultado es excelente. gracias. :D - Ignacio Erwin

@IgnasiusErwin Me enfrento al mismo problema que encontraste al dibujar una línea usando sprite, cómo lo resolviste usando algo de interpolación, ¿puedes agregar una parte útil de ese código? - Anand

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.