Probleme de clignotement lors d'un affichage directx

Résolu
Shaolyne Messages postés 155 Date d'inscription jeudi 12 mai 2005 Statut Membre Dernière intervention 8 mars 2011 - 4 avril 2006 à 23:16
Shaolyne Messages postés 155 Date d'inscription jeudi 12 mai 2005 Statut Membre Dernière intervention 8 mars 2011 - 5 avril 2006 à 10:42
Suite à quelques expériences personnelles concernant directx, je me
suis heurté à un problème qui ressemble étroitement à un précédent que
l'on avait résolu sur ce meme forum, c'est pourquoi je me tourne vers
vous. En gros, j'ai un clignotement de mon affichage dans un panel, qui
sert de fenetre pour mon device, suite au dev.clear(). Pour supprimer
ce problème avec une picturebox par exemple, il suffit de d'utiliser un
bmp de base à chaque affichage sur lequel on va redessiner mais ici je
ne vois pas trop comment faire pour effectuer une opération
similaire... Merci d'avance!

Le tibetain...

5 réponses

MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
5 avril 2006 à 10:06
Salut,

Pour dessiner du Text, utilises Microsoft.DirectX.Direct3D.
Font.DrawString();
(SDK de fevrier avec l'assembly 2.0, sinon il me semble que c'est DrawText)


Mx
MVP C#
3
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
5 avril 2006 à 00:10
Salut, Direct3D ou DirectDraw !?

Direct3D je connais pas mais j'imagine que le principe n'est pas très différent de DirectDraw. Avec DirectDraw on utilise un double buffer voir un triple buffer l'on dessine dans l'un pendant que l'autre est affiché puis on flip les surfaces.
0
Shaolyne Messages postés 155 Date d'inscription jeudi 12 mai 2005 Statut Membre Dernière intervention 8 mars 2011 1
5 avril 2006 à 09:56
En effet, c bien en direct3D. Directdraw aurait été abandonné depuis la version 8 de directx, c'est pourquoi je me suis penché sur la 2D avec Direct3D. Merci pour ce conseil mais quelques lignes m'aiderai grandement je pense, voici mon affichage du buffer contenant des axes d'une part(linetlist) et un second pour une courbe dessinnée progressivement(linestrip). Il y a quelques constantes et un booleen qui permet de savoir si on veut afficher ou non la courbe(Sinus).
Merci d'avance

code:

#region Render (rendu graphique)



// Enfin création de la fonction du rendu 3D !



public
void Render()


{



//Effacer les vertexes qui existent (vider le BackBuffer) et tout remplir en Bleu


Dev.Clear(
ClearFlags.Target, CouleurDevice, 1.0f, 0);



//Commencer à définir ce qui sera visible


Dev.BeginScene();



//On affiche les axes


Dev.SetStreamSource(0, VBufAxes, 0);


Dev.VertexFormat = customVertexFormat;
//on redonne à nouveau le format de vertex


Dev.DrawPrimitives(
PrimitiveType.LineList, 0, 2);



//On vérifie qu'il faut afficher la sinudoïde



if (Sinus)


{



//Sélection de la source (numéro de la source, ou sont les vertexes, 1er vertexe à afficher)


Dev.SetStreamSource(0, VBuf, 0);


Dev.VertexFormat = customVertexFormat;
//on redonne à nouveau le format de vertex



// Enfin on indique le Vertexe de départ, ici 0, et le nombre de primitives a cré (= nombre de triangle), ici 1 puisque l'on a 3 vertexes.


Dev.DrawPrimitives(
PrimitiveType.LineStrip, 0, LargeurZone);


}



//Fin de la définition


Dev.EndScene();



//Lancer l'affichage


Dev.Present();


}


#endregion

Donc voila après exécution de ce code j'ai des clignotements.
0
Shaolyne Messages postés 155 Date d'inscription jeudi 12 mai 2005 Statut Membre Dernière intervention 8 mars 2011 1
5 avril 2006 à 10:00
Aussi, je ne vois pas comment dessiner du texte dans mon device (par exemple avec GDI+ je dessinais par un objet graphique référencant mon panel), j'ai donc utilisé l'objet graphique Graphics sur le panel avec une mise à jour lors de chaque mise à jour du device (après le clear), n'y aurait-il pas une autre méthode?

Le tibetain...
0

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

Posez votre question
Shaolyne Messages postés 155 Date d'inscription jeudi 12 mai 2005 Statut Membre Dernière intervention 8 mars 2011 1
5 avril 2006 à 10:42
Merci pour ce premier problème résolu! Reste plus que mon affichage qui est deja beaucoup plus stable depuis cette modification!

Le tibetain...
0
Rejoignez-nous