Réaliser un systeme de vues multiples [D3D8] - Programmation
Marsh Posté le 06-02-2002 à 20:30:03
bin j'ai pas essayé, mais tu as une structure D3DVIEWPORT8, et des fonctions:  
 
IDirect3DDevice8::GetViewport  
IDirect3DDevice8::SetViewport  
 
les renders targets, c ce qu'il fo faire pour du cube mapping & co..., mais là je pense que c'est ça qu'il te faut non ? 
Marsh Posté le 06-02-2002 à 21:00:51
oui les swap chains ca ne fonctionne 
que si les vues sont en mode fenetre. 
ca me paraissait evident desole 
et j'ai stupidement lu "vues multiples". 
 
D'ailleurs tu comprendras aisement pourquoi ca 
ne marche pas en pleine ecran: quand tu fais 
le present, le driver si il le peut 
fait un simple flip des  
surfaces (qui couvrent tout l'ecran). 
 
Dans ton cas, il faut rendre chaque 
vue dans leur partie de l'ecran  
et faire le present a la fin 
(pas la peine de rendre dans une texture). 
de plus quand deux vues se superposent  
il faut au prealable effacer la partie 
de l'ecran couverte par la vue que tu auras 
decide de mettre en dessous (il faut faire un choix!) 
et tracer la vue "superieure" apres. 
 
A+ 
LEGREG 
Marsh Posté le 06-02-2002 à 21:06:59
Si tes objets couvrent  
toute la vue superieure 
tu n'es pas oblige de nettoyer (par Clear(..) ) 
le tampon de couleur, il te suffit de 
nettoyer le tampon de profondeur. 
 
tu peux egalement vouloir des effets 
ou seule une partie de la vue soit 
couverte. (objet 3D flottant au dessus de la vue, 
une carte en relief par exemple). 
 
Tu peux egalement utiliser les tests 
sur le stencil buffer pour ne pas tracer 
la vue la ou elle sera ecrasee. 
Bref il y a un grand nombre de possibilites. 
 
A+ 
LEGREG 
Marsh Posté le 06-02-2002 à 21:21:50
Merci a vous deux!! Ca y est j'ai réussi! C'était bien le coup des Viewports en effet, j'y pensais meme plus a ces viewports obligatoires sous Dx7 et facultatifs sous Dx8..   
 
Marsh Posté le 07-02-2002 à 12:23:03
Une (derniere?) petite question, comment je dois mettre les composantes 1;1 et 2;2 de ma matrice de projection pour que ce qui soit rendu ne soit pas stretché en fonction des dimensions du viewports? Par exemple, si j'ai un viewport qui a une forme tres aplatie, je ne veux pas que l'image dedans le soit aussi! Je voudrais que ca soit coupé.
Marsh Posté le 18-02-2002 à 16:19:51
Desoler de poluer ton topic mais j'essaie en vain d'avoir une reponse de ta part  
j'avais poser une question sur ce topic tu m'avais repondu 
que les entete tu pouvais me les donner 
et je les voudrais j'en ai vraiment besoin 
malheureusement mon topic est partie au oubliette 
alors si tu peu aller sur mon topic poster la reponse ca serait sympa 
http://forum.hardware.fr/forum2.ph [...] p=1&trash=  
 
merci 
  
 
Marsh Posté le 28-05-2002 à 09:18:39
| Ace17 a écrit a écrit  : Une (derniere?) petite question, comment je dois mettre les composantes 1;1 et 2;2 de ma matrice de projection pour que ce qui soit rendu ne soit pas stretché en fonction des dimensions du viewports? Par exemple, si j'ai un viewport qui a une forme tres aplatie, je ne veux pas que l'image dedans le soit aussi! Je voudrais que ca soit coupé. | 
 
 
up 
Marsh Posté le 06-02-2002 à 19:25:01
Mon application tourne en plein écran. Sur l'écran, j'aimerais que le joueur puisse voir le monde dans lequel il évolue (vue subjective), mais qu'il puisse voir aussi une jauge de vie ou une carte, placés a titre d'indicateurs quoi. C'est pour ca que je voudrais faire un systeme a plusieurs vues, car il y a plusieurs scenes.
J'ai d'abord pensé a faire des rendus dans des render targets pour ensuite copier ces surfaces dans mon back buffer, et ensuite présenter le back buffer a l'écran. Seulement les render targets ne marchent pas chez moi (il me renvoie INTERNALDRIVERERROR a la création).
LEGREG m'a dit qu'il fallait créer une deuxieme Swap Chain mais il est proclamé partout dans la doc qu'une seule chaine ne peut etre crée en full screen, mais surtout dans le cas ou deux vues se superposent, elles vont se disputer la place du dessus!
Voila, je bloque, si quelqu'un pouvait me ré-aguiller...je cherche depuis assez longtemps