[quote name=‹ Drealmer › date=’ 3 Aug 2005, 08:57’]J’imagine que tes cases utilisent une certaine série de texures, on va dire par exemple trois textures : {mur, sol, bonus} (je simplifie). Le mieux est de faire une liste qui contienne toutes les cases, tu la génères avec une boucle avec les coordonnées en dur de sorte qu’en affichant la liste en 0,0 ça t’affiche toute la grille.
Ouais mais et les textures alors ? Bah tu utilises ce qu’on appelle un atlas, c’est à dire que tes trois textures, on va dire qu’elles font 64x64, ben tu les places dans une grosse texture de 128x128 ou 256x64 comme tu préfères. Et tu adaptes les coordonnées uv en fonction.
Ce que j’entends par adapter les coordonnées de textures, c’est que si tu as un atlas de 256x64 qui contient tes textures dans l’ordre suivant : MSB? (? c’est la texture inutilisée, pour que l’atlas aie une largeur qui soit une puissance de 2), quand tu veux afficher une case avec la texture S (sol), tu utilises les coordoonées suivantes:
haut gauche : 0.25, 0.0
haut droite : 0.5, 0.0
bas gauche : 0.25, 1.0
bas droite : 0.5, 1.0
L’intérêt de tout ça c’est que ainsi toute ta grille peut être affichée d’un coup par OpenGL. Ah oui, tu vas avoir des problèmes avec le filtrage, qui te forceront à légèrement adapter tes coordonées et à générer les mipmaps à la main, mais je te laisse découvrir
Bon dans ce cas précis, c’est de l’enculage de mouches, si t’avais 200 grilles à afficher, ça pourrait avoir un impact positif sur les performances, ici ça va juste faire que dalle. En plus de ça, il me semble avoir lu qu’openGL est un peu moins sensible à ce genre d’optimisations que Direct3D lorsque le nombre d’objets est relativement faible.
Mais bon, quitte à apprendre, autant apprendre les bons principes J’espère aussi ne pas raconter de conneries, on fait comme ça en DirectX, j’ai juste transposé en OpenGL mais je n’ai pas beaucoup d’expériences pratiques en OpenGL.
Et aussi, si ça te semble compliqué, ne te laisse pas impressionner et utilise l’une des deux méthodes que tu as évoqué, les deux marcheront et te permettront d’avancer dans ton projet. Rien n’interdit d’y revenir plus tard pour chipoter
[right][post=« 382887 »]<{POST_SNAPBACK}>[/post][/right][/quote]
Merci du tuyau,
effectivement je n’avais pas penser à faire une liste precompilée pour chaque map … jvé voir suivant mon humeur!! :-p
Merci ++ fat