Prob directX mode fenetré avec VB :(

Antitrust Messages postés 30 Date d'inscription mercredi 27 novembre 2002 Statut Membre Dernière intervention 28 juillet 2003 - 24 mai 2003 à 12:54
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 - 25 mai 2003 à 15:23
salut!
j'ai un prob avec DirectX :
en fait dans ma form principal j'affiche une surface DirectDraw en mode clipping (fenetré) et j'ai des images affichées dessus. ça fonctionne très bien (en fait c'est un Pacman et le ptit bonhomme sa balade bien). Mais j'ai fait un editeur de niveau, et c'est la que j'ai un prob : j'ouvre une new surface DirectX, et j'affiche une autre surface directdraw, dans un autre Form, avec des images dessus encore. Avant d'afficher la 2ème form, l'éditeur de niveau, je ferme tout les composants DirectX :

DD.RestoreDisplayMode
Set SurfacePrimaire = Nothing
Set SurfaceBackBuffer = Nothing
Set DD = Nothing
Set DX = Nothing
Form2.Show

Mais ma nouvelle surface ne s'affiche pas bien du tt! Je declare une nouveau composant DirectX, DirectDraw (Set DD = DX.DirectDrawCreate(""))
Et je fait presque comme pour la Form d'avant mais la surface s'affiche bien que qd je met le form plein ecran, ou parfois lorsque la new surface chevauche l'autre qui est derrière ! J'ai besoin d'aide ! Merci de vos idées!

AnTiTrUsT-VB

6 réponses

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
25 mai 2003 à 11:00
etrange, si tes instances sont clairement séparées.....

tu ne continue pas la boucle d'affichage de la 1ere.....

non, je vois pas, DX7 et hyper loin dans mes souvenirs, en plus, ca aide pas !
-----------------------------------------------------------------------
By Renfield

thomas_reynald@msn.com

Aucune touche n'a été bléssée lors de la saisie de ce texte..........
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
25 mai 2003 à 11:01
envoie moi ton projet, si tu veux, je jetterais un oeil malgré tout (non, je suis po la pour te le subtiliser !!! ;) )
-----------------------------------------------------------------------
By Renfield

thomas_reynald@msn.com

Aucune touche n'a été bléssée lors de la saisie de ce texte..........
0
Antitrust Messages postés 30 Date d'inscription mercredi 27 novembre 2002 Statut Membre Dernière intervention 28 juillet 2003
25 mai 2003 à 12:28
Ouais merci là sa marche mieux deja mais sa rame un truc de fou! pourtant j'ai bien tout "fermé" :
Arreter = True 'j'arrete la boucle
DD.RestoreDisplayMode
Set SurfacePrimaire = Nothing
Set SurfaceBackBuffer = Nothing
Set DD = Nothing
Set DX = Nothing
et je "ferme" toutes mes surfaces
j'en "ouvre" d'autres, normal
mais je comprend vraiment pas pourquoi sa rame
en + je suis obligé de mettre ma "nouvelle" form en mode plein ecran sinon la surface DirectX s'affiche pas bien
en + ma boucle n'est pas chargée !

Do

DoEvents
SurfaceBackBuffer_MAP.BltColorFill ddRect(0, 0, 0, 0), QBColor(0)
SurfaceBackBuffer_MAP.BltFast 0, 0, SurfaceESSAI_MAP, ddRect(0, 0, 0, 0), DDBLTFAST_WAIT
SurfacePrimaire_MAP.Blt ddRect(0, 0, Largeur, Hauteur), SurfaceBackBuffer_MAP, ddRect(0, 0, 0, 0), DDBLT_WAIT

Loop Until A = True

bon la je pige plus rien...
ps : je t'ai mis dans mes amis MSN (milo_44@msn.com) accepte ;)
a+
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
25 mai 2003 à 13:01
ta boucle m'a l'ai plus ou moins normale.... reste a savoir comment tu a declaré tout ca..... enfin, en ce moment, j'ai pleins d'exems, donc peu de temps.....

-----------------------------------------------------------------------
By Renfield

thomas_reynald@msn.com

Aucune touche n'a été bléssée lors de la saisie de ce texte..........
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Antitrust Messages postés 30 Date d'inscription mercredi 27 novembre 2002 Statut Membre Dernière intervention 28 juillet 2003
25 mai 2003 à 14:15
bon un autre prob d'un uatre projet : (mais du mm style)
j'affich tout simplement un images ds une surface DirectX mais l'image n'est pas de la bonne taille! elle ne s'affiche pas avec la meme taille que celle "normale", avec photoshop par ex
en fait je declare simplement une surface
Public Brouillon_SurfaceESSAI As DDSURFACEDESC2
je ne modifie rien à Brouillon_SurfaceESSAI
Set SurfaceESSAI = DD.CreateSurfaceFromFile(chemin_fichier, Brouillon_SurfaceESSAI)

et ma boucle :

Do

DoEvents
SurfaceBackBuffer.BltColorFill ddRect(0, 0, 0, 0), QBColor(0)
SurfaceBackBuffer.BltFast 10, 100, SurfaceESSAI, ddRect(0, 0, 0, 0), DDBLTFAST_WAIT
SurfacePrimaire.Blt ddRect(0, 0, 500, 600), SurfaceBackBuffer, ddRect(0, 0, 0, 0), DDBLT_WAIT

If Err.Number = DDERR_SURFACELOST Then SurfacePrimaire.restore 'Si la surface est perdue, on la restaure

Loop Until Arreter = True

voila je pige pas
a+
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
25 mai 2003 à 15:23
si mes souvenirs ne me jouent pas de tours, c'est atoi de specifier la taille de la surface , dans le SurfaceDesc , me semble-t'il......
-----------------------------------------------------------------------
By Renfield

thomas_reynald@msn.com

Aucune touche n'a été bléssée lors de la saisie de ce texte..........
0
Rejoignez-nous