ClipScreen

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
lionel_om
Messages : 1500
Inscription : jeu. 25/mars/2004 11:23
Localisation : Sophia Antipolis (Nice)
Contact :

Message par lionel_om »

Structure not found : D3DVIEWPORT7
J'ai la dernière version de PB.

Lio
Webmestre de Basic-univers
Participez à son extension: ajouter vos programmes et partagez vos codes !
RV
Messages : 209
Inscription : sam. 18/nov./2006 15:16

Message par RV »

@Thyphoon
Wouaaaaaaaaaaaa dur dur de programmer avec un gamin de 3ans surexité qui passe son temps a sauter, crier, taper les objets...lollllllllllll
T'as essayé le chatterton? :D

@lionel_om
Structure not found : D3DVIEWPORT7
J'ai la dernière version de PB.
J'ai le même problème! :?
Avatar de l’utilisateur
djes
Messages : 4252
Inscription : ven. 11/févr./2005 17:34
Localisation : Arras, France

Message par djes »

Vous auriez au moins pû chercher sur le forum en tapant Clipscreen3d... :roll: M'enfin... Voici le code complet (de DrDri je crois)

Code : Tout sélectionner

Structure D3DVIEWPORT7
  dwX.l
  dwY.l
  dwWidth.l
  dwHeight.l
  dvMinZ.f
  dvMaxZ.f
EndStructure

ProcedureDLL.l ScreenWidth()
  !extrn _PB_Screen_Width
  !MOV   eax, [_PB_Screen_Width]
  ProcedureReturn
EndProcedure

ProcedureDLL.l ScreenHeight()
  !extrn _PB_Screen_Height
  !MOV   eax, [_PB_Screen_Height]
  ProcedureReturn
EndProcedure

ProcedureDLL.l ScreenDepth()
  !extrn _PB_Screen_Depth
  !MOV   eax, [_PB_Screen_Depth]
  ProcedureReturn
EndProcedure

ProcedureDLL.l 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.l 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.l 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

InitSprite()
InitSprite3D()

OpenWindow(0, 0, 0, 640, 480, "ClipScreen3D")
OpenWindowedScreen(WindowID(0), 0, 0, 640, 480, 0, 0, 0)

CreateSprite(0, 128, 128, #PB_Sprite_Texture)
If StartDrawing( SpriteOutput(0) )
  Box(0, 0, 128, 128, #Green)
  Circle(64, 64, 64, #Red)
  StopDrawing()
EndIf

CreateSprite3D(0, 0)

If Start3D()
 
  ;ClipScreen3D2(0, 0, 100, 100)
 
  DisplaySprite3D(0, 50, 50)
 
  Stop3D()
EndIf

FlipBuffers()

Repeat
Until WaitWindowEvent() = #PB_Event_CloseWindow
Répondre