J'utilise OpenGL avec gluPerspective, que dois-je faire pour utiliser un système d'axes dont l'origine est en haut à gauche plutôt qu'en bas à gauche?Modification du système d'axes OpenGL
Répondre
Vous pouvez le faire en inversant l'axe y
de la matrice de projection. Donc:
glMatrixMode(GL_PROJECTION);
glPushMatrix();
glLoadMatrix([1 0 0 0;
0 -1 0 0;
0 0 1 0;
0 0 0 1]);
//^pseudo-code, replace with actual matrix
Cela devrait le faire.
Vous pouvez également utiliser un glMultMatrix
appel avec la même matrice (au lieu de Push
puis Load
), mais cette manière est plus facilement inversée (il suffit d'appeler glPopMatrix
sur la pile GL_PROJECTION
plus tard).
Vous pouvez également utiliser la même technique pour retourner l'un des autres axes; Il suffit de mettre des signes moins dans les endroits appropriés.
Je dirais que le fonctionnement direct sur la matrice de projection est un moyen propre pour cette opération. Mais si par hasard vous avez besoin d'une alternative:
Vous pouvez simplement utiliser glScalef(1.f, -1.f, 1.f)
pour retourner l'axe.
Il s'agit également d'une opération sur la matrice GL_MODELVIEW ou GL_PROJECTION (tout ce qui est actuellement actif).
- 1. Confusion du système OpenGL Coordinate
- 2. Modification des menus du système global
- 3. Modification des dialogues au niveau du système: TimePicker, DatePicker
- 4. Modification de root_dir sur un système magento
- 5. Modification du script d'arrêt
- 6. Modification de l'information système hudson java listée
- 7. Étendue du système dans l'analyse du système
- 8. Préserver le système d'axe d'origine tout en tournant avec openGL
- 9. question de sécurité: Modification du mot de passe du système via python
- 10. Modification du nom d'hôte/de l'adresse IP du système Windows monté en tant qu'image
- 11. Rotation OpenGL ES dans le système de coordonnées fixes
- 12. OpenGL à OpenGL-ES - Modification de la couleur des triangles dans une bande
- 13. Implémentation d'un système de coordonnées fixes dans OpenGL
- 14. Modification/modification du sélecteur affecté à UINavigationBar.backItem
- 15. Modification du nom du schéma
- 16. Modification du résultat du QuerySet
- 17. Rendu du navigateur via OpenGL
- 18. Rendu du feu dans OpenGL
- 19. iPhone. La performance du système de particules
- 20. Powershell: modification du texte
- 21. modification du modèle TT
- 22. Modification du compilateur
- 23. Modification du fichier elf
- 24. modification du fichier plist
- 25. Modification du chemin d'en-tête système et des fichiers d'en-tête personnalisés
- 26. Modification des couleurs du système pour une seule application (Windows, .NET)
- 27. interruptions du système d'exploitation
- 28. Suivre l'activité du système
- 29. Script du système Webmail
- 30. Windows Programmation du système
GlLoadMastrix ne détruirait-il pas la projection précédemment définie? Il remplace complètement la matrice de projection, ce qui n'est pas ce qui est demandé. – ypnos
C'est pour cela que l'appel de 'glPushMatrix' est pour, il pousse la matrice existante vers le bas sur la pile, en préservant la transformation existante. La nouvelle matrice se compose avec la précédente, elle ne la remplace pas. – tzaman
Comme je l'ai appris, et comme tous les manuels sur Internet, j'ai trouvé, LoadMatrix remplace toujours la matrice sur la pile, et ne se compose jamais. Le PushMatrix est seulement utile pour restaurer la matrice originale (et abandonner celui chargé) avec PopMatrix après. – ypnos