Page 25 sur 62

Publié : mar. 02/janv./2007 9:34
par Progi1984
Pub faite sur PureBlogFr

Publié : mar. 02/janv./2007 9:41
par tmyke
Merci :wink:

Publié : mar. 02/janv./2007 14:17
par wolfjeremy
Salut,

Merci pour ton moteur, je vais esseyer de me mettre a la 3D.
Jusque maintenant j'était repoussé par la complexité de la chose...

Publié : mar. 02/janv./2007 14:43
par tmyke
Alors n'hésite pas, y-a pas mal de passionnés ici qui se feront un plaisir de
t'aider, meme si tu pars de zero... (dont moi bien sur :wink: )

Publié : mar. 02/janv./2007 18:55
par wolfjeremy
J'ai parcouru les exemples et l'aide, et ce que tu a fait a l'air vraiment terrible ! Bravo !

J'ai bien aimer le moteur de terrain, c'est le système qu'on utilisais sur darkbasic pro, et j'aimais bien ce système. (en plus poussé sur ton moteur)

Publié : mar. 02/janv./2007 19:11
par tmyke
Merci pour les compliment, en tous les cas tu n'est donc pad a ton
coups d'essais en 3D, vue que tu connais DBPro, donc pour toi l'apprentissage de
Dreamotion3D devrait se faire en dousseur... :)

PS: a titre d'info, quel sont les élément de ta config, (surtout CPU+carte video),
je coche sur ma tablette les config ou cela été essayé et ou cela semble tourner sans réel soucis... :wink:

Publié : mar. 02/janv./2007 19:27
par wolfjeremy
Ma config est la suivante :

CPU : AMD 2700+
Memoire : 512 Mo PC3200
GPU : Geforce fx 5600 XT 128 mo
Carte mère : ASUS A7V600-X

Publié : mar. 02/janv./2007 19:33
par tmyke
Merci ... Image

Publié : mar. 02/janv./2007 20:26
par wolfjeremy
Juste une question, tout ce qui a sur ton forum c'est le forum "Work in progress ..." ?

Ou en s'inscrivant il y a d'autre forum qui apparaisent ?

Publié : mar. 02/janv./2007 20:29
par tmyke
En t'inscrivant, j'activerais un compte 'beta testeur', qui te donnera accès
a l'autre partie du forum (in french).

Publié : mar. 02/janv./2007 20:31
par wolfjeremy
Ok merci, je me suis inscrit, pseudo : wolfjeremy :D

Publié : ven. 05/janv./2007 14:39
par wolfjeremy
Salut,

Je voulais savoir, comment je pouvez facilement jouez entre un rendu normal et un rendu fillaire ?

J'utilise donc :

Code : Tout sélectionner

DM_BrushAddRender(*bb, #D3DRS_FILLMODE, #D3DFILL_WIREFRAME )
Pour mettre en "fillaire" (je sais pas comment ça s'appel mdr)
Mais pour l'enlever j'utilise quoi ?

Merci d'avance pour votre réponse.

Publié : ven. 05/janv./2007 15:40
par Seyhajin
Essaye :

Code : Tout sélectionner

DM_BrushAddRender(*bb, #D3DRS_FILLMODE, #D3DFILL_SOLID )
pour switcher entre les deux.

Publié : ven. 05/janv./2007 16:13
par wolfjeremy
Ok ça marche, mais après avoir changé de mode 4 fois, il ne veux plus changé mdr
Enfin bon ça marche c'est déjà ça. :D

ça serait bien si quelqu'un saurait m'expliquer un peu les ligne du genre DM_BrushAddTextureStage etc, car je ne comprend pas trop les parametres de ces fonctions :oops:

Publié : ven. 05/janv./2007 16:47
par tmyke
Tout d'abord, sache qu'il existe une fonction

Code : Tout sélectionner

DM_EntityAddRender(*entity, #D3DRS_FILLMODE, #D3DFILL_WIREFRAME )
Sont role est identiques, mais elle applqiue les commutateurs a l'entité dans sont ensemble,
et pas seulement à une Brush en particulier.


Il existe 3 grandes fonctions pour les changement d'état des divers
éléments constitutif de DirectX:

SetRenderState(), SetSamplerState(), SetTextureStageState()

SetRenderState() permet d'agir sur le traitement des pixel et des vertex par
le pipeline de rendu, comme par exemple le BlendMode, AlphaRef, ou FillMode.

SetSamplerState() permet d'agir sur les opérations de traitement généraux lié
aux textures, comme les filtres ou le type d'adressage.

SetTextureStateStage() permet de jouer sur les valeur de Blend, couleur, etc...
sur chaque canal de texture lors de leurs traitement par le pipeline de rendu.

Tu trouveras dans la Doc de DirectX toutes les info et les possibilité sur ces
instructions vital a la bonne maitrise de la 3D avec DirectX.

Sous DM3D, tu disposes d'une pile de pré-rendu et post-rendu, que tu peux alimenter pour
appliquer les changements d'état souhaité, soit au niveau d'une brush, soit au
niveau d'une entité dans sont ensemble. Ce sont les instructions:

Code : Tout sélectionner

    DM_BrushAddRender.l(*CBrush, state.l, value.l)
    DM_BrushAddSampler.l(*CBrush, sampler.l, Types.l, value.l)
    DM_BrushAddTextureStage.l(*CBrush, Stage_texture.l, Types.l, Value.l)
    
    DM_BrushRender(*CBrush, index_stack.l, state.l, value.l)
    DM_BrushSampler(*CBrush, index_stack.l, sampler.l, Types.l, value.l)
    DM_BrushTextureStage(*CBrush, index_stack.l, Stage_texture.l, Types.l, Value.l)
    
    DM_BrushRestoreRender(*CBrush, state.l, value.l)
    DM_BrushRestoreSampler(*CBrush, sampler.l, Types.l, value.l)
    DM_BrushRestoreTextureStage(*CBrush, Stage_texture.l, Types.l, Value.l)

et

Code : Tout sélectionner

    DM_EntityAddRender.l(*CBrush, state.l, value.l)
    DM_EntityAddSampler.l(*CBrush, sampler.l, Types.l, value.l)
    DM_EntityAddTextureStage.l(*CBrush, Stage_texture.l, Types.l, Value.l)
    
    DM_EntityRender(*CBrush, index_stack.l, state.l, value.l)
    DM_EntitySampler(*CBrush, index_stack.l, sampler.l, Types.l, value.l)
    DM_EntityTextureStage(*CBrush, index_stack.l, Stage_texture.l, Types.l, Value.l)
    
    DM_EntityRestoreRender(*CBrush, state.l, value.l)
    DM_EntityRestoreSampler(*CBrush, sampler.l, Types.l, value.l)
    DM_EntityRestoreTextureStage(*CBrush, Stage_texture.l, Types.l, Value.l)


Au prime abord, cela parrait asser compliqué, mais une fois que tu en as compris le principe,
cela te donne les plein pouvoir sur le rendu des tes Entités, et une puissance très
importante.

Par exemple, dans le cas d'un mesh en filaire, il suffit d'ecrire:

Code : Tout sélectionner

*mesh.CEntity = DM_CreateCube()
DM_EntityAddRender(*mesh, #D3DRS_FILLMODE, #D3DFILL_WIREFRAME )
DM_EntityRestoreRender(*mesh, #D3DRS_FILLMODE, #D3DFILL_SOLID )

Si tu n'ecrivais pas l'instruction 'DM_EntityRestore...', le pipeline de rendu
resterais en mode filaire et les autres objets serais aussi représentés en WireFrame.

Voila, c'est succins, mais j'espère que cela a éclairé un petit peu ta lanterne.