Julien237
Messages postés883Date d'inscriptionvendredi 3 novembre 2000StatutMembreDernière intervention 3 mars 2009
-
16 juin 2006 à 12:09
vr3h
Messages postés164Date d'inscriptionjeudi 6 mars 2003StatutMembreDernière intervention 9 octobre 2006
-
20 juin 2006 à 14:55
Bonjour,
Je m'initite tout doucemement aux textures de managed directx, et je suis en ce moment un code du fichier d'aide du sdk de managed directx.. Je crée ma texture plutot simplement comme ceci :
Tex = New Texture(Dev, 512, 512, 0, 0, Format.A8R8G8B8, Pool.Managed)
dans le sdk, les 512 (width et height de la texture) étaient des 128, mais j'ai besoin d'une plus grande texture. Là ca marche, avec 128 aussi, mais lorsque je mets une valeur différente d'une puissancede 2 (comme par exemple 300), il me fait une erreur interne... C'est normal ? Y'a moyen de créer des textures de tailles qu'on veut quand même non ?
vr3h
Messages postés164Date d'inscriptionjeudi 6 mars 2003StatutMembreDernière intervention 9 octobre 2006 20 juin 2006 à 14:26
Alors oui c'est normal, et non il n'y a malheureusement pas de solution à ce problème. En fait cela vient de la méthode d'adressage des textures dans Direct3D, et pour les textures cela a toujours été ainsi :
une texture peut etre carrée ou rectangulaire, mais quoi qu'il en soit les dimensions doivent toujours être une puissance de 2.
Après il te reste un autre objet que les textures appelé "surface" mais qui ne peut pas être utilisé sur un objet 3D
Julien237
Messages postés883Date d'inscriptionvendredi 3 novembre 2000StatutMembreDernière intervention 3 mars 20097 20 juin 2006 à 14:31
Wow hé ben je m'attendais pas à ca, enfin c'est quand même étrange parce que en chargeant des texture depuis un fichier là j'ai jamais eu de problèmes de tailles quelconques... me reste plus qu'a charger des fichiers blancs lol...
vr3h
Messages postés164Date d'inscriptionjeudi 6 mars 2003StatutMembreDernière intervention 9 octobre 2006 20 juin 2006 à 14:43
c'est normal que tu n'aies pas eu de problème, en fait DirectX, meme s'il t'autorise à charger une image dont les dimensions ne sont pas des puissances de 2 dans une texture, il se charge lui même des transformations necessaires je crois. Essaye de charger une texture de 300x300 et récupère ensuite les dimensions de la texture, normallement tu devrais avoir des puissances de 2...
Julien237
Messages postés883Date d'inscriptionvendredi 3 novembre 2000StatutMembreDernière intervention 3 mars 20097 20 juin 2006 à 14:47
Mmh intéressant, je n'ai pas mon prog sous la main, mais il me semble qu'en fait, la texture une fois chargée, n'a plus de propriété de tailles... Mais c'est intéressant à savoir si on veux manipuler son buffer à la main...
Julien.
Vous n’avez pas trouvé la réponse que vous recherchez ?
vr3h
Messages postés164Date d'inscriptionjeudi 6 mars 2003StatutMembreDernière intervention 9 octobre 2006 20 juin 2006 à 14:55
j'ai testé juste après mon dernier post et donc : l'image que j'ai voulu charger fait 487x487 pixels, quand ensuite je récupère les paramètres de la texture et les affiche, il me dit que la texture fait 512x512 texels... n'ayant pas changé les coordonnées de texture, il ne m'affiche cependant rien de noir ou de blanc... DirectX créé donc une texture dont les dimensions sont bien des puissances de 2 et effectue ensuite une mise à l'echelle de manière à remplir la totalité du buffer de la texture avec l'image spécifiée.