Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1322 connectés 

  FORUM HardWare.fr
  Programmation
  Divers

  [DirectX] Fog et les Drivers ATI

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[DirectX] Fog et les Drivers ATI

n°593027
Het Neo
Het Neo is tHe oNe
Posté le 18-12-2003 à 01:07:47  profilanswer
 

Salut tout le monde!
 :hello:  
 
Je commence à développer une appli D3D.
Je met les appels et init necessaires au fog et...
L'écran et gris (couleur choisie pour le vidage du tampon) j'ai regardé plein de fois le code, le fichier d'aide du SDK et je n'ai visiblement rien oublié.  
Je dl un tutorial en C (je code sous Delphi) et meme problème alors que visiblement son appli marchais.
Je depoussière ma GF3 et oh merveille ça marche.
Donc j'en deduis que ça vient des drivers ATI. Seulement je n'ai pas trouvé de drivers qui n'avaient pas ce bug.
Si quelqu'un sait quels drivers n'ont pas ce bug ou sait comment l'eviter je suis preneur car c génant surtout que les derniers ATI sortis aujourd'hui ne changent rien. :(  
 
Voilà mon pb.
Merci d'avance à ceux qui répondrons et à ceux qui m'ont lu jusqu'au bout  :D


---------------
Do or do not, there is no try...
mood
Publicité
Posté le 18-12-2003 à 01:07:47  profilanswer
 

n°593033
bjone
Insert booze to continue
Posté le 18-12-2003 à 02:06:19  profilanswer
 

salut...
 
ton Clear(), tu luis passes quoi comme couleur ?
avec D3DCLEAR_TARGET|D3DCLEAR_ZBUFFER je suppose ?
 
ton renderstate D3DRS_FOGCOLOR, il est à quoi ?
 
donc si je comprends bien, après un clear, tu as la couleur du D3DRS_FOGCOLOR et non du Clear() ?
 
et si tu vires tout entre BeginScene() et EndScene() ?
(pour être sur que ce soit au Clear() que ça chie...)
le Present() est bien là ? (je suppose que oui...)

n°593051
LeGreg
Posté le 18-12-2003 à 08:21:30  profilanswer
 

Je pense qu'il manque les explications.  
Aux dernieres nouvelles le fog dans les drivers ATI marchent correctement. Maintenant explique nous CLAIREMENT ce que fait ton programme (appels que tu fais, tests avec debug, refrast etc..)
 
LeGreg

n°593200
Het Neo
Het Neo is tHe oNe
Posté le 18-12-2003 à 11:21:52  profilanswer
 

Ben mes lignes de code marchent sur ma GeForce 3.
La fonction suivante est appellée au sein de render (procedure de rendu de la scène) cad apres le g_pd3dDevice.Clear normal.
C'est pas très beau parceque ça efface deux fois le buffer mais je verais plus tard pour ça.
 

Code :
  1. procedure FogFX(FogStart,FogEnd,Density:DWord; Color : TD3DCOLOR);
  2. begin
  3.   g_pd3dDevice.Clear(0, nil, D3DCLEAR_TARGET,Color, 1.0, 0);
  4.   g_pd3dDevice.SetRenderState(D3DRS_FOGSTART,FogStart);
  5.   g_pd3dDevice.SetRenderState(D3DRS_FOGEND,FogEnd);
  6.   g_pd3dDevice.SetRenderState(D3DRS_FOGDENSITY, Density);
  7.   g_pd3dDevice.SetRenderState(D3DRS_FOGCOLOR,Color);
  8.   g_pd3dDevice.SetRenderState(D3DRS_FOGVERTEXMODE,D3DFOG_LINEAR);
  9.   g_pd3dDevice.SetRenderState(D3DRS_FOGENABLE,itrue);
  10.   g_pd3dDevice.SetRenderState(D3DRS_RANGEFOGENABLE,itrue);
  11. end;


 
Lorsque j'appelle la procedure j'ai testé une 20aine de valeurs pour le fog start, fog end et density et j'ai toujours le meme resultat, c'est comme si le brouillard avait une densité enorme (il ne fait pas de dégradé de la couleur du fog sur les mesh à rendre en fait). J'ai vérifié aussi si la valeur que je donnais aux diférents paramètres étaient correctement appliqué et c'est le cas.
C'est pour ça que j'ai privilégié la piste du driver mais j'ai peut-etre oublié quelquechose.
Voilà, j'espere avoir été plus clair.
Merci  :jap:


---------------
Do or do not, there is no try...
n°593376
bjone
Insert booze to continue
Posté le 18-12-2003 à 12:52:43  profilanswer
 

ton Clear et ton renderstate FOGCOLOR sont tous les deux à "Color".
 
donc déjà tu devrais avoir ton backbuffer à la couleur du fog.
bon alors le prob, c'est que tu dis le fog sature très tôt....
 
donne tes valeurs que je voies dans mo code à moa (j'ai une gf4... :D)

n°593508
chrisbk
-
Posté le 18-12-2003 à 14:59:53  profilanswer
 

BJOne a écrit :

ton Clear et ton renderstate FOGCOLOR sont tous les deux à "Color".


 
normalement les fogStart/fogEnd c pas des floats qu'il faut passer par d'horrible magouille ?

n°593632
bjone
Insert booze to continue
Posté le 18-12-2003 à 17:45:03  profilanswer
 

wai le truc qui fait cast tordu pour faire passer le float en DWORD....
 
note: ses paramètres de fog sont déjà a passer en DWORD...

n°593636
Het Neo
Het Neo is tHe oNe
Posté le 18-12-2003 à 17:50:07  profilanswer
 

Bah float,DWord... ce sont des types compatibles non?
Puis comme je l'ai dit à plusieurs reprises le code ne pose aucun problème sur ma GF3 qui as les derniers drivers Nvidia...
Des que j'ai le temps d'uploader l'exe sur mon FTP je vous fournis un lien pour voir si ceux qui ont la meme conf que moi n'ont pas de problèmes.
Peut-etre que ça vient pas exactement des drivers mais des dll que j'utilise mais visiblement ça vient pas du code...


---------------
Do or do not, there is no try...
n°593641
bjone
Insert booze to continue
Posté le 18-12-2003 à 17:54:39  profilanswer
 

bin non c pas compatible.
justement, en C pour que ça soit cohérent, y'a une macro pour faire passer le float en DWORD sans faire une conversion flottant=>entier.
 
entre un flottant à 6 et le 6 en entier, au niveau codage binaire spa la même chose (hors SetRenderState attends en interne une valeur codée en float pour les renderstate D3DRS_FOGEND..., même si tu la passes en tant que DWORD).


Message édité par bjone le 18-12-2003 à 17:59:45
n°593643
bjone
Insert booze to continue
Posté le 18-12-2003 à 17:56:12  profilanswer
 

mais bon, on va dire que de ce coté là c'est bon...
 
si tu nous donnais un peu plus de code...

mood
Publicité
Posté le 18-12-2003 à 17:56:12  profilanswer
 

n°593674
bjone
Insert booze to continue
Posté le 18-12-2003 à 18:11:27  profilanswer
 

bon alors j'ai ptet une piste mais c'est pas sûr (j'ai pas joué avec toutes les options de fog perso, alors...)
 
http://msdn.microsoft.com/archive/ [...] g_7nlf.asp
 
http://msdn.microsoft.com/archive/ [...] g_0t6b.asp
 
avec ton fog, tu est en fog dit -range-, donc la distance caméra->vertex, et non avec la composante Z de chaque vertex.
 
donc je me demandes si ton range (eye) fog échoue pas sur ta gf3, et que comme tes paramètres sont fait pour le Z-based fog ça marche...
et que sur la radeon le eye-fog réussi et que du coup des paramètres sont incohérents pour le eye-fog...
 
 

n°593715
LeGreg
Posté le 18-12-2003 à 18:59:51  profilanswer
 

il y a l'exemple fog dans les samples du DX SDK
ce serait une bonne idée de t'en inspirer.
 
passer un float comme un DWORD:
passer par une union (pas portable mais ça marche sur AMD64 et IA32)
ou passer par un pointeur de DWORD casté de manière C-sale vers un pointeur de float (pas portable non plus et ne marche pas sur AMD64).
 
LeGreg

n°594351
bjone
Insert booze to continue
Posté le 19-12-2003 à 18:15:52  profilanswer
 

no news ?


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Divers

  [DirectX] Fog et les Drivers ATI

 

Sujets relatifs
Qui peut me cree une disquette de boot intégrant les drivers usb ??Drivers NDIS intermediaire
Nombre de caractères dans une requète et drivers JDBC[directx ] probleme de débutant avec D3DXVECTOR3
[directx 9] comment s'utilise D3DXVECTOR3 ?Afficher une toolbar quand on est en plein écran via DirectX
[Delphi] pb avec directx et createfont[DirectX] Exemple de cube
[DELPHI] prog directX +.....[DirectX] plusieurs textures par objet
Plus de sujets relatifs à : [DirectX] Fog et les Drivers ATI


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR