Yes it's great, i'm playing with it. 
Here a small example to create a mesh and texture manual, i needed this example for my own code 
Code: Select all
;////////////////////////////////////////////////////////////////
;//
;// Project Title: Dreamotion3D pour PureBasic
;// File Title: MESH MANUEL & TEXTURE MANUELLE
;//            
;// Created On: 12-10-2006
;// Conversion Author: Terry Myke
;//
;////////////////////////////////////////////////////////////////
; Fichiers Include
IncludePath "Include\"
IncludeFile "d3dx9.pbi"
IncludeFile "dreamotion3d.pbi"     
Declare CreateCube()
Global  *camera.CEntity
Global  *entity.CEntity
Global  *brush.CBrush
Global  *texture.CTexture
Global  *font.CFont
;Initialisation des différents modules
If InitSprite() = 0 Or InitKeyboard() = 0 Or InitMouse() = 0
  End
EndIf
;ouvre un ecran 3D
DM_Graphics3D(800, 600, 32,  1, 1)
*font = DM_LoadFont( "Arial",16, 2)
;creation du cube
CreateCube()
;--------------------------------------------------------------
; UNE PETITE CAMERA POUR VOIR NOTRE SCENE
;--------------------------------------------------------------
*camera = DM_CreateCamera(#Null)
DM_MoveEntity(*camera, 0, 0, -50)
DM_CameraClsColor(*camera, 25, 25, 25)
Repeat
  ExamineKeyboard()
  DM_TurnEntity(*entity,1,1,1)
  ;debut rendu
  DM_BeginScene()
  ;rendu scene
  DM_Renderworld()
  ;fin rendu
  DM_EndScene()
Until KeyboardPushed(#PB_Key_Escape)
DM_ClearGraphics()
End
Procedure CreateCube()
  ;creation d'un mesh vide, un canal de texutre,
  ;12 faces, 24 vertices, 1 surface, pas de parent
  *entity = DM_CreateMesh(12, 24, 1, #Null)
  ;les vertex
  Restore Vertex
  For i= 0 To 23
    Read x.f
    Read y.f
    Read z.f
    Read u.f
    Read v.f
    ;les coordonnées de vertex
    DM_VertexCoords(*entity, i, x, y, z)
    ;les coordonnées de texture (canal 0)
    DM_VertexTexCoords(*entity, i, 0, u, v)
  Next i
  ;les triangles
  Restore Indice
  For i = 0 To 11
    Read v1.l
    Read v2.l
    Read v3.l
    DM_VertexTriangle(*entity, i, v1,v2,v3, 0)
  Next i
  ;on crée une petite Brush, dont on récupère le pointeur
  *brush = DM_CreateBrush("cube")
  ;modifie certains paramètres de la brush
  DM_BrushAmbient(*brush, 255,128,0,255)
  DM_BrushDiffuse(*brush, 255,128,0,255)
 
  ;--------------------------------------------------------
  ; TEXTURE 
  ;--------------------------------------------------------
  ;creation d'une texture vide de 256x256
  *texture = DM_CreateTexture(256,256)
  ;ré-oriente le buffer de sortie graphique vers notre texture
  DM_SetBuffer(*texture)
  ;debut d'un rendu
  DM_BeginScene()
    DM_ClsScreen (210, 0, 255, 0)         ; efface le buffer avec une couleur
    DM_DrawRect  ( 10, 10, 200, 200)      ; dessin d'un rectangle 2D
    DM_SetColor2D(222, 0, 0, 255)         ; change couleur du trait
    DM_DrawOval  (100, 100, 50, 50)       ; dessin oval 2D
    DM_DrawText(*font, 10, 15, "TEXTURE") ; un petit texte
  ;fin rendu
  DM_EndScene()
  ;de nouveau le buffer vers l'ecran
  DM_SetBuffer(#Null)
 
 
  DM_BrushTexture(*brush, *texture, 0)
  ; modifie l'état de rendu de la Brush pour voir de tous les cotés
  DM_BrushAddRender(*brush, #D3DRS_CULLMODE, #D3DCULL_NONE)
  ; affecte la brush créee a notre entity
  DM_PaintEntity(*entity, *brush, 0)
  ; génératon auto des normales de l'entity créée
  DM_UpdateNormal(*entity)
  ; p'tite rotation
  DM_RotateMesh(*entity, 0, 45, 0)
EndProcedure
DataSection
Vertex:
; liste des 24 vertex avec leurs coordonnées de textures
Data.f -10, 10,-10, 1, 0
Data.f  10, 10,-10, 1, 1
Data.f -10,-10,-10, 0, 0
Data.f  10,-10,-10, 0, 1
Data.f -10, 10, 10, 0, 0
Data.f -10,-10, 10, 0, 1
Data.f  10, 10, 10, 1, 0
Data.f  10,-10, 10, 1, 1
Data.f -10, 10, 10, 0, 0
Data.f  10, 10, 10, 0, 1
Data.f -10, 10,-10, 1, 0
Data.f  10, 10,-10, 1, 1
Data.f -10,-10, 10, 1, 0
Data.f -10,-10,-10, 1, 1
Data.f  10,-10, 10, 0, 0
Data.f  10,-10,-10, 0, 1
Data.f  10, 10,-10, 0, 0
Data.f  10, 10, 10, 0, 1
Data.f  10,-10,-10, 1, 0
Data.f  10,-10, 10, 1, 1
Data.f -10, 10,-10, 1, 0
Data.f -10,-10,-10, 1, 1
Data.f -10, 10, 10, 0, 0
Data.f -10,-10, 10, 0, 1
Indice:
;liste des faces
Data.l  0,  1,  2
Data.l  1,  3,  2
Data.l  4,  5,  6
Data.l  5,  7,  6
Data.l  8,  9, 10
Data.l  9, 11, 10
Data.l 12, 13, 14
Data.l 13, 15, 14
Data.l 16, 17, 18
Data.l 17, 19, 18
Data.l 20, 21, 22
Data.l 21, 23, 22
EndDataSection