Page 1 of 1

[PB 4.30b3] Clipscreen3d

Posted: Thu Oct 09, 2008 3:41 pm
by djes
Would it be possible to add a clipscreen routine for 3d, like with this old code :

Code: Select all

;-******************************************************************************************************

ProcedureDLL.i ScreenWidth()

  !EXTRN _PB_Screen_Width
  !MOV   Eax, [_PB_Screen_Width]
  ProcedureReturn

EndProcedure

;******************************************************************************************************

ProcedureDLL.i ScreenHeight()
  !EXTRN _PB_Screen_Height
  !MOV   Eax, [_PB_Screen_Height]
  ProcedureReturn
EndProcedure

;******************************************************************************************************

ProcedureDLL.i ScreenDepth()
  !EXTRN _PB_Screen_Depth
  !MOV   Eax, [_PB_Screen_Depth]
  ProcedureReturn
EndProcedure

;******************************************************************************************************

ProcedureDLL.i ClipScreen3D()

  Protected Clip.l, *ViewPort.D3DVIEWPORT7
  Protected Sprite3DDevice.IDirect3DDevice7
 
  !EXTRN _PB_Direct3D_Device
  !MOV Eax, dword [_PB_Direct3D_Device]
  !MOV dword [p.v_Sprite3DDevice], Eax
 
  !EXTRN _PB_3DViewPort
  !MOV dword [p.p_ViewPort], _PB_3DViewPort
 
  *ViewPort\dwX = 0
  *ViewPort\dwY = 0
  *ViewPort\dwWidth  = ScreenWidth()
  *ViewPort\dwHeight = ScreenHeight()
  *ViewPort\dvMinZ = 0.0
  *ViewPort\dvMaxZ = 1.0
 
  If Sprite3DDevice\SetViewport(*ViewPort) = #S_OK
    Clip = #True
  EndIf
  
  ProcedureReturn Clip
EndProcedure

;******************************************************************************************************

ProcedureDLL.i ClipScreen3D2(x.l, y.l, Width.l, Height.l)

  Protected Clip.l, *ViewPort.D3DVIEWPORT7
  Protected Sprite3DDevice.IDirect3DDevice7
 
  !MOV Eax, dword [_PB_Direct3D_Device]
  !MOV dword [p.v_Sprite3DDevice], Eax
 
  !MOV dword [p.p_ViewPort], _PB_3DViewPort
 
  *ViewPort\dwX = x
  *ViewPort\dwY = y
  *ViewPort\dwWidth  = Width
  *ViewPort\dwHeight = Height
  *ViewPort\dvMinZ = 0.0
  *ViewPort\dvMaxZ = 1.0
 
  If Sprite3DDevice\SetViewport(*ViewPort) = #S_OK
    Clip = #True
  EndIf

  ProcedureReturn Clip
EndProcedure

;******************************************************************************************************

ProcedureDLL.i ClipScreen3D3(x.l, y.l, Width.l, Height.l, MinZ.f, MaxZ.f)

  Protected Clip.l, *ViewPort.D3DVIEWPORT7
  Protected Sprite3DDevice.IDirect3DDevice7
 
  !MOV Eax, dword [_PB_Direct3D_Device]
  !MOV dword [p.v_Sprite3DDevice], Eax
 
  !MOV dword [p.p_ViewPort], _PB_3DViewPort
 
  *ViewPort\dwX = x
  *ViewPort\dwY = y
  *ViewPort\dwWidth  = Width
  *ViewPort\dwHeight = Height
  *ViewPort\dvMinZ = MinZ
  *ViewPort\dvMaxZ = MaxZ
 
  If Sprite3DDevice\SetViewport(*ViewPort) = #S_OK
    Clip = #True
  EndIf

  ProcedureReturn Clip
EndProcedure

Posted: Tue Jan 13, 2009 8:24 pm
by Fluid Byte
Just discovered this, good stuff! :o