2010-10-19 22 views
2

Je suis assez novice en programmation et je le fais, à ce stade, juste pour m'éduquer et m'amuser.Déformer une image sur l'iphone avec OpenGL

J'ai beaucoup de mal à comprendre certaines choses OpenGL malgré avoir lu cet excellent article here. J'ai également téléchargé et joué avec un exemple du site du développeur Apple qui utilise une image .png pour un sprite. Je veux éventuellement utiliser une image. Tout ce que je veux faire est de prendre une image et la déformer de telle sorte que les quatre coins finissent à quatre coordonnées x, y différentes que je fournis. Ce serait sur une sorte de minuterie (CADisplayLink?) Avec un ou plusieurs de ces points changeant à chaque moment. Je veux juste l'étirer entre ces points dynamiques. J'ai juste du mal à comprendre exactement comment cela fonctionne. Comme je l'ai compris quelques exemples de code plus au centre des développeurs, je peux utiliser:

glVertexPointer(2, GL_FLOAT, 0, spriteVertices); 

où spriteVertices est quelque chose comme:

const GLfloat spriteVertices[] = { 
-0.90f, -.85f, 
0.95f, -0.83f, 
-0.85f, 0.85f, 
0.80f, 0.80f,  
}; 

Le problème est que je ne comprends pas ce que les chiffres En fait, pourquoi certains ont des négatifs en face d'eux, et d'où ils comptent pour obtenir les quatre coins. Comment aurais-je besoin de changer les coordonnées x, y normales que je reçois pour les brancher? (les nombres que j'aurais pour x, y ne ressembleraient pas à des nombres entre 1 et 0. Je voudrais quelque chose qui s'apparente à la précision par pixel

Toute aide est grandement appréciée même si c'est juste un lien vers plus Je n'arrive pas à trouver des ressources pour un newb

Répondre

1

Ce n'est pas aussi compliqué que ça en a l'air au début, chaque paire de nombres se rapporte à une position x, y sur l'écran. f, dirait aller à 80% de la zone dessinable pour les deux x et y (de gauche à droite, de haut en bas) .Quand -0,80, -0,80 dirait aller à 80% de la zone de dessin de droite à gauche, jusqu'à Les points négatifs ne font que changer de côté.Un point à noter, openGL descend vers le haut (comme si vous regardiez un bâtiment depuis le sol), tandis que l'iPhone descend vers le bas (comme si vous étiez readi ng un livre).

Pour obtenir des pixels, vous devez multiplier la valeur du flottant par la zone à dessiner 1024 X 0,8 = 819,2.

Ce tutoriel est pour les textures, mais il est étonnant et vous aide vraiment à apprendre les systèmes de coordonnées: http://iphonedevelopment.blogspot.com/2009/05/opengl-es-from-ground-up-part-6_25.html

+0

ermm ... désolé, je viens de réaliser que je pensais à la mauvaise plate-forme. EAGLview utilise par défaut un système de coordonnées cartésien. – Beaker