Directx 8 (gestion générale sur le principe des moteurs 3d) - Divers - Programmation
Marsh Posté le 23-02-2003 à 17:07:08
On c'est comme ça.
En 3D, la carte et le CPU n'arrête pas de recalculer les mêmes choses.
Marsh Posté le 23-02-2003 à 21:26:56
dweis:
Ton processeur graphique accepte des coordonnees transformees et clippees. Comme tu lui fournis des coordonnees non transformees et que tu n'as pas envie de perdre du temps dans le cas ou la vue n'a pas bouge a conserver les coordonnees transformees des objets (en plus tu serais oblige de faire la transformation par le CPU parce que le GPU ne stocke rien..).
-> en fait cette approche est certainement la plus rapide dans le cas general.
LeGreg
Marsh Posté le 23-02-2003 à 16:57:59
Y'a un truc que je pige pas bien dans les tutoriaux.
si on prend par exemple http://www.andypike.com/tutorials/directx8/010.asp
y'a 3 objets qu'on veut faire animer des rotations différentes. donc dans le code il crée ses 3 matrices puis on a
m_pD3DDevice.SetTransform(D3DTS_WORLD, matShip1);
m_pMesh1.Render();
m_pD3DDevice.SetTransform(D3DTS_WORLD, matShip2);
m_pMesh2.Render();
m_pD3DDevice.SetTransform(D3DTS_WORLD, matShip3);
m_pMesh3.Render();
bref ça marche bien mais ce que je comprends pas c'est que niveau optimisation ça me semble complètement nul ? car en fait à chaque fois qu'il faut bouger un objet, au lieu de recalculer uniquement les coordonées de l'objet par la transformation, ça va recalculer les coordonnées des points de tous les objets.
alors :
1) j'ai rien compris ?
2) on peut pas faire autrement
3) ce n'est pas du tout comme ça qu'il faut faire, il faut plutot recalculer les coordonées uniquement de l'objet concerné