Je travaille sur une application OpenGL ES1 qui affiche une grille 2D et permet à l'utilisateur de naviguer et de l'échelle/rotation. J'ai besoin de connaître la traduction exacte des coordonnées de View Touch dans mon monde ouvert et ma cellule de grille. Y a-t-il des aides pour faire l'inverse des dernières transformations que je fais pour la navigation? ou je devrais calculer et faire les choses matricielles à la main?iPhone OpenGL ES - Comment choisir
Répondre
Le mode de prélèvement n'est pas disponible dans OpenGL ES. Mais il est facile de calculer la coordonnée d'écran de n'importe quel point 3D en utilisant la matrice de projection récupérée à partir de l'état openGL actuel. Voici comment je le fais (IMPoint2D et IMPoint3D sont basiques (x, y) et (x, y, z) structures)
+ (IMPoint2D) getScreenCoorOfPoint:(IMPoint3D)_point3D
{
GLfloat p[16]; // Where The 16 Doubles Of The Projection Matrix Are To Be Stored
glGetFloatv(GL_PROJECTION_MATRIX, p); // Retrieve The Projection Matrix
/*
Multiply M * point
*/
GLfloat _p[] = {p[0]*_point3D.x +p[4]*_point3D.y +p[8]*_point3D.z + p[12],
p[1]*_point3D.x +p[5]*_point3D.y +p[9]*_point3D.z + p[13],
p[2]*_point3D.x +p[6]*_point3D.y +p[10]*_point3D.z+ p[14],
p[3]*_point3D.x +p[7]*_point3D.y +p[11]*_point3D.z+ p[15]};
/*
divide by scale factor
*/
IMPoint2D _p2D = {_p[0]/_p[3], _p[1]/_p[3]};
/*
get result in screen coordinates. In this case I'm in landscape mode
*/
return (IMPoint2D) {_p2D.x*240.0f + 240.0f, (1.0f - _p2D.y) *160.0f};
}
ressemble à ce que vous cherchez est une méthode unproject. La librairie glut est fournie avec un, mais elle n'est pas disponible sur OpenGL ES. rewrite the glut code yourself to be iphone compatible Vous pouvez également écrire votre propre code pour unproject, ce qui impliquerait d'avoir besoin de mettre à l'échelle le point de contact à votre viewport, de le multiplier par l'inverse de vos matrices de projection * modelview, et de diviser par w pour obtenir un vecteur 3D.
Cela peut-être possible avec GL_MODELVIEW_MATRIX? ou GL_MODLVIEW, je ne modifie pas la position de vue, seulement del modelview. je suis le faire:
glMatrixMode(GL_MODELVIEW);
// Setup model view matrix
glLoadIdentity();
[gAccel GetAccelerometerMatrix:(GLfloat *) matrix headingX:headx headingY: heady headingZ:headz];
// Finally load matrix
glLoadMatrixf((GLfloat*)matrix);
glPushMatrix();
glRotatef(-90, 1, 0, 0);
glScalef(0.0005, 0.0005, 0.0005);
glTranslatef(x, 0.0, z);
grâce
- 1. OpenGL ES iPhone Textures
- 2. OpenGL ES pour Iphone
- 3. DirectX OpenGL Porting ES (iPhone)
- 4. Gomme dans OpenGL ES iPhone
- 5. OpenGL ES (iPhone) Décrochage tactile
- 6. Iphone opengl es - glu, glPushName
- 7. Comment sélectionner un objet dans OpenGL ES?
- 8. iPhone OpenGL ES 2d texture d'arrière-plan
- 9. iPhone OpenGL ES mélange alpha incorrect
- 10. Skybox OpenGL ES iPhone et iPad
- 11. Texture plein écran iPhone OpenGL ES
- 12. glBindTexture Problème avec OpenGL ES sur iPhone
- 13. OpenGL à OpenGL-ES - glBegin();
- 14. Comment charger et afficher l'image dans OpenGL ES pour iphone
- 15. Comment dois-je structurer mon jeu iPhone OpenGL ES 1.1?
- 16. Comment utiliser les shaders dans OpenGL ES avec iPhone SDK
- 17. Dans OpenGL ES sur iPhone, comment faire défiler deux images?
- 18. Comment afficher une vidéo dans OpenGL ES pour iPhone?
- 19. OpenGL 2.0 ES coordonnées
- 20. Fonction OpenGL ES
- 21. OpenGL ES profondeur tampon
- 22. OpenGL ES 2.0 multithreading
- 23. es glReadPixels Opengl
- 24. Comment rendre une image avec OpenGL ES?
- 25. Projet mixte de type iPhone (navigation et opengl es)
- 26. Précision de l'instrument OpenGL ES
- 27. Notions élémentaires de la texture 2D pour iPhone OpenGL ES
- 28. opengl es texture atlas pour le texte
- 29. Dessin seulement une partie d'un OpenGL texture ES iPhone
- 30. Utilisez OpenGL ES pour créer un outil de peinture iPhone?
I a ajouté la fonction - (CGPoint) getScreenCoorOfPoint: (IMPoint3D) _point3D qui semble me donner ma position articles dans le monde, mais le peu que je suis maintenant coincé On est: * J'ai des objets qui ont une position * J'ai ma position dans le monde (oeil gluLookAt [0], oeil [1], oeil [2]) * et je avoir où j'ai tapé sur le s creen Comment puis-je me joindre à tout cela, c'est la dernière chose sur mon chemin pour archiver la grandeur !!!! – Burf2000