* * *    
Главная » Статьи » Код PB

Просмотров: 1475 | Дата: 16.04.2024 | Коментарии (0)

PB_DX9Sprite - Sprite3D-Farbung




Code
; http://www.purebasic.fr/german/viewtopic.php?f=4&t=22900
InitSprite()
InitSprite3D()

; DirectX9
Structure D3DTLVERTEX
  x.f:y.f:z.f
  rhw.f:Color.l
  tu.f:tv.f
EndStructure  

Structure PB_DX9Sprite3D
  TexRes.i ; TexRes
  Vertice.D3DTLVERTEX[4] ; The 4 vertices for the rectangle sprite
  TmpVertice.D3DTLVERTEX[4] ; The 4 vertices for the rectangle sprite
  Width.l ; width set with ZoomSprite3D()
  Height.l ; height set with ZoomSprite3D()
  RealWidth.l
  RealHeight.l
  Angle.f
  Transformed.l
EndStructure

Procedure ClipSprite3D(Sprite3D, x, y, Width, Height)
  Protected *Sprite3D.PB_DX9Sprite3D = IsSprite3D(Sprite3D)
  With *Sprite3D
  \Vertice[0]\tu = x / \RealWidth
  \Vertice[0]\tv = y / \RealHeight  
  \Vertice[1]\tu = (x + Width) / \RealWidth  
  \Vertice[1]\tv = y / \RealHeight
  \Vertice[2]\tu = x / \RealWidth  
  \Vertice[2]\tv = (y + Height) / \RealHeight  
  \Vertice[3]\tu = (x + Width) / \RealWidth  
  \Vertice[3]\tv = (y + Height) / \RealHeight  
  EndWith
EndProcedure

Procedure Sprite3DColor(Sprite3D, Color0, Color1, Color2, Color3)
  Protected *Sprite3D.PB_DX9Sprite3D = IsSprite3D(Sprite3D)
  With *Sprite3D
  \Vertice[0]\Color = Color0
  \Vertice[1]\Color = Color1
  \Vertice[2]\Color = Color2
  \Vertice[3]\Color = Color3
  EndWith
EndProcedure

OpenWindow(0, 0, 0, 800, 600, "SCREEN", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
OpenWindowedScreen(WindowID(0), 0, 0, 800, 600, 0, 0, 0)

  Sprite3DQuality(1)
   
  CreateSprite(1, 32, 32, #PB_Sprite_Texture)
  StartDrawing(SpriteOutput(1))
  Box(0,0,8,8,$FFFFFF)
  Box(24,0,8,8,$FFFFFF)
  Box(0,24,8,8,$FFFFFF)
  Box(24,24,8,8,$FFFFFF)
  Box(8,8,16,16,$808080)
  StopDrawing()
  CreateSprite3D(1, 1)
  Sprite3DColor(1, $FF0000, $00FF00, $0000FF, $FFFFFF)

Repeat

  ClearScreen(0)
   
  Start3D()
   
  ClipSprite3D(1, 0, 0, 32, 32)
  RotateSprite3D(1, 0, #PB_Absolute)
  ZoomSprite3D(1, 32, 32)
  DisplaySprite3D(1, 128, 64)

  Time.f = ElapsedMilliseconds()/1000

  ClipSprite3D(1, Time*50, Time*70, 256, 256)
  RotateSprite3D(1, Time*25, #PB_Absolute)
  ZoomSprite3D(1, 256, 256)
  DisplaySprite3D(1, 128, 128)

  Stop3D()

  FlipBuffers()

Until WindowEvent() = #PB_Event_CloseWindow










Сайт посвящён языку программирования PureBasic — коммерческий компилятор языка программирования, использующего синтаксис BASIC. Предназначен для создания кроссплатформенных приложений для AmigaOS, Linux, Microsoft Windows, Windows NT и Mac OS X. Разработан компанией Fantaisie Software.