Je travaille sur un petit jeu sous OpenGL ES.OpenGL ES - comment garder certains objets à une taille fixe?
En arrière-plan, il y a un monde/carte. La carte est juste une grande texture. Zoom/Pincée/Pan est utilisé pour se déplacer. Et j'utilise glOrthof (gauche, droite, bas, haut, zNear, zFar) pour implémenter le zoom/pincement. Lorsque j'effectue un zoom avant, les sprites situés en haut de la carte sont également agrandies. Mais j'aimerais que certains sprites restent à une taille fixe.
Je pourrais probablement calculer un facteur d'échelle, en fonction des paramètres à glOrthof, mais il doit y avoir une façon plus naturelle et simple de le faire, au lieu de mise à l'échelle les sprites vers le bas quand je zoome.
Si je ajouter du texte ou des éléments de GUI au-dessus de la carte, ils devraient certainement avoir une taille fixe.
Existe-t-il une solution pour cela, ou dois-je laisser des valeurs fixes dans glOrthof et implémenter le zoom/pincement d'une autre manière?
EDIT: Pour être plus clair: je veux des sprites qui font un zoom avant/arrière avec la carte, mais restent à la même taille. J'ai quelques éléments qui sont comme les broches sur l'application cartographique de l'iPhone. Lorsque vous zoomez, les broches restent de la même taille, mais vous vous déplacez sur l'écran pour rester au même endroit sur la carte. C'est principalement ce que je veux une solution. Des solutions pour cela sont déjà venues ci-dessous, merci!
A fait un test rapide avec ceci. Les sprites conservent la même taille/position lorsque je zoome sur la carte. Cette solution fonctionnera bien pour les éléments qui devraient rester sur une position fixe sur l'écran de l'iPhone, comme les éléments de l'interface utilisateur et le texte. Mais j'aimerais avoir des sprites pour rester sur la même position sur la carte. Un peu comme les broches sur l'application cartographique de l'iPhone.Lorsque vous effectuez un zoom/un panoramique sur la carte, les broches restent sur la même position par rapport à la carte, mais la taille de la broche reste la même. Existe-t-il une solution rapide pour cela? :-) – OMH
Poussez une matrice d'échelle sur la pile (avec 'glScalef' ou une autre) pour inverser la mise à l'échelle du monde, avant de dessiner vos sprites. – Thomas
Intéressant, mais je ne comprends pas très bien. Pourriez-vous élaborer un peu, s'il vous plaît? – OMH