[PB 4.30b3] Clipscreen3d

Got an idea for enhancing PureBasic? New command(s) you'd like to see?
User avatar
djes
Addict
Addict
Posts: 1806
Joined: Sat Feb 19, 2005 2:46 pm
Location: Pas-de-Calais, France

[PB 4.30b3] Clipscreen3d

Post 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
User avatar
Fluid Byte
Addict
Addict
Posts: 2336
Joined: Fri Jul 21, 2006 4:41 am
Location: Berlin, Germany

Post by Fluid Byte »

Just discovered this, good stuff! :o
Windows 10 Pro, 64-Bit / Whose Hoff is it anyway?
Post Reply