2009-03-25 4 views
0

Je crée une application iPhone et j'utilise OpenGL, pour lequel je suis nouveau. Je dois changer les positions des pixels, quelqu'un peut-il me montrer les fonctions pour travailler sur les pixels?Comment déplacer les pixels?

Un exemple de code source pour illustrer l'idée serait apprécié.

+0

Que voulez-vous dire par déplacer des pixels? Cela n'a pas vraiment de sens. – mmcdole

Répondre

3

Je ne suis pas un expert sur les questions de l'iPhone en particulier, et je suis un programmeur OpenGL intermédiaire, prenez donc pour ce qu'elle vaut la peine -

OpenGL décourage la manipulation de pixels directe, en grande partie parce qu'il ne faire autant de sens lorsque vous avez affaire à un type d'accélération matérielle. Les tampons de trame sont généralement stockés directement dans la RAM graphique, et tout en poussant les bits vers la mémoire graphique est rapide, l'extraction des informations est un cas rare et non optimisé. Les cartes 3D sont optimisées pour la texturation rapide des triangles, pas des pixels.

Au bon vieux temps, quand le frame buffer était en mémoire principale, ce n'était pas un gros problème, mais les choses ont changé. Ainsi, même s'il est souvent encore possible de jeter un coup d'œil sur des pixels individuels, vous obtiendrez généralement des augmentations de vitesse spectaculaires en ré-exprimant votre opération en tant que méthode native OpenGL. Vous pouvez écrire des pixels en utilisant GL_POINTS, d'ailleurs, mais encore une fois, c'est assez lent. Cependant, il existe certains effets pour lesquels la manipulation de pixels sur place est utile - les plasmas et les effets de flamme ne peuvent vraiment pas être réalisés d'une autre manière. Pour cela, je vous suggère d'émuler un frame buffer - allouer le vôtre, et y écrire directement. Ensuite, lorsque vous avez besoin de l'afficher, passez tout le bloc à l'écran à la fois.

Questions connexes