Fonctions pour Dreamotion3D
Publié : mar. 07/nov./2006 22:34
Voilà au lieu de continuer à bourrer le post de Tmyke, j'ai décider d'ouvrir se post afin de réunir des fonctions utiles pour Dreamotion3D
je commence donc :
*Entity = DM_CreatePlain(sizex.f,sizey.f)
Cette fonction sert à créer une face à 2 triangles (plain) sur l'axe XY
DM_TexturePlain(*entity.CEntity,Texture.s,BackFace.b=#Null)
Cette fonction sert à texturer un plain avec une texture, avec la posibilité de rendre ce plain visible des 2 cotés.
Je me suis inspirer d'un code de Comtois.
@Comtois, je ne sais pas si c'est voulu de ta part, mais dans ton code pour creer un cube manuellement, tu as trop de vertices (24) alors que tu n'as besoin que de 8 vertices, les triangles peuvent partagés les memes vertices.
je commence donc :
*Entity = DM_CreatePlain(sizex.f,sizey.f)
Cette fonction sert à créer une face à 2 triangles (plain) sur l'axe XY
DM_TexturePlain(*entity.CEntity,Texture.s,BackFace.b=#Null)
Cette fonction sert à texturer un plain avec une texture, avec la posibilité de rendre ce plain visible des 2 cotés.
Code : Tout sélectionner
Procedure DM_CreatePlain(sizex.f,sizey.f)
Protected *Temp.l,*bb.CBrush,*texture.CTexture
*Temp = DM_CreateMesh.l(2,4,1,#Null)
DM_VertexCoords(*Temp,0,-sizex/2,-sizey/2,0)
DM_VertexCoords(*Temp,1,sizex/2,-sizey/2,0)
DM_VertexCoords(*Temp,2,sizex/2,sizey/2,0)
DM_VertexCoords(*Temp,3,-sizex/2,sizey/2,0)
DM_VertexTexCoords(*Temp, 0, 0, 0, 0)
DM_VertexTexCoords(*Temp, 1, 0, 1, 0)
DM_VertexTexCoords(*Temp, 2, 0, 1, 1)
DM_VertexTexCoords(*Temp, 3, 0, 0, 1)
DM_VertexTriangle(*Temp,0, 0,1,3,0)
DM_VertexTriangle(*Temp,1, 1,2,3,0)
DM_UpdateNormal(*Temp)
ProcedureReturn *Temp
EndProcedure
Procedure DM_TexturePlain(*entity.CEntity,Texture.s,BackFace.b=#Null)
*bb.CBrush
*texture.CTexture
*bb = DM_CreateBrush("face")
DM_BrushAmbient(*bb, 255,128,0,255)
DM_BrushDiffuse(*bb, 255,128,0,255)
*texture = DM_GetTexture(*bb, 0)
DM_LoadTexture(*texture ,Texture)
DM_BrushTexture(*bb, *texture,0)
If BackFace<>#Null : DM_BrushAddRender(*bb, #D3DRS_CULLMODE, #D3DCULL_NONE) : EndIf
DM_PaintEntity(*entity, *bb, 0)
EndProcedure
@Comtois, je ne sais pas si c'est voulu de ta part, mais dans ton code pour creer un cube manuellement, tu as trop de vertices (24) alors que tu n'as besoin que de 8 vertices, les triangles peuvent partagés les memes vertices.