2010-09-08 4 views
1

Je dessine quelques lignes dans cocos2d (en utilisant ccDrawLine pratique), rien d'extraordinaire, mais je veux vérifier si ma ligne animée touche quelque chose. Je pouvais faire des calculs mathématiques pour certains objets, mais pour certaines parties dynamiques de la scène, il serait beaucoup plus facile si je pouvais faire:Dans Cocos2d/OpenGL-ES, vérifiez le pixel du tirage précédent?

if pixel not black at (x,y) 
    // line will hit something 
    do handleCollisionDetectedAt(x,y) 

Que proposeriez-vous? Au moins, que suggérez-vous si ce serait OpenGL ES simple.

Répondre

0

solution trouvée:

GLubyte pColor[4]; 
glReadPixels(x,y,1,1,GL_RGBA,GL_UNSIGNED_BYTE,&pColor[0]); 
int red = pColor[0]; 
int green = pColor[1]; 
int blue = pColor[2]; 

NSLog(@"(R,G,B) = (%d,%d,%d)",red,green,blue); 
+0

Attention à le faire. La lecture des pixels d'un framebuffer peut être coûteuse, et nécessite probablement de synchroniser le GPU avec le CPU qui peut bloquer tout votre dessin. Si vous avez besoin de faire ceci en boucle serrée, faites attention aux conséquences de perf. –

+0

hmm bon à savoir, maintenant il semble que je vais aller avec une texture que je vais rendre, alors peut-être lire les pixels de la texture est moins cher? – Allisone

Questions connexes