Seite 3 von 4

Verfasst: 04.09.2006 10:24
von dllfreak2001
Also mich interessiert das schon.
Wenn man viel mit Sprite3D umgeht möchte man auch wissen wie es auf den verschiedenen Plattformen aussieht.
HAtte auch mal so nen Tool geschrieben das allerdings nur reine rgb-werte in eine txt geschrieben hat.
Aber das ist wirklich cool

Verfasst: 04.09.2006 10:46
von DrShrek
dllfreak2001 hat geschrieben:Also mich interessiert das schon.
Wenn man viel mit Sprite3D umgeht möchte man auch wissen wie es auf den verschiedenen Plattformen aussieht.
HAtte auch mal so nen Tool geschrieben das allerdings nur reine rgb-werte in eine txt geschrieben hat.
Aber das ist wirklich cool
Dagegen ist auch nichts zu sagen!
Aber es sollte die aktuelle PB4.0 sein.

Vieleicht stellt @STARGÅTE die PB Sourcen zur Verfügung?

Verfasst: 04.09.2006 12:08
von STARGÅTE
von was denn jetzt ?

*verwirrt*

Verfasst: 04.09.2006 12:17
von DrShrek
STARGÅTE hat geschrieben:von was denn jetzt ?
*verwirrt*
Wie wärs damit: GRAFIKTEST-EXE ?
Dann kann jeder mit seiner aktuellen PB Version gegen testen

Verfasst: 04.09.2006 16:08
von STARGÅTE
Hier ist der angepasste CODE, damit ihr auch das bild habt ^^

PS: ich glaube ihr müsst einiges umschreiben damit es läuft ^^,
PS²: nicht wunder das da noch andere sachen dabei sind aber hatte vorher noch mehr Funktionen drin.

Code: Alles auswählen

InitSprite()
InitSprite3D()
InitKeyboard()
OpenScreen(1280, 1024, 32, "GT") 

Structure F
 F.l
 x.f
 y.f
 w.f
 v.f
 G.f
 h.f
EndStructure
NewList F.F()
Procedure Feuer(F, x.f, y.f, w.f, v.f, G.f, h.f)
 AddElement(F())
 F()\F = F
 F()\x = x 
 F()\y = y    
 F()\w = w         
 F()\v = v
 F()\G = G   
 F()\h = h
EndProcedure

b.f = 3.14159265/180 ; Bogenmaß

 CreateSprite(2, 128, 128, #PB_Sprite_Texture)
 StartDrawing(SpriteOutput(2))
  For n = 1 To 63
   Circle(64,64,64-n, RGB(n*8/2,n*3/2,n/2))
  Next n
 StopDrawing()
 CreateSprite3D(2, 2)


  For m = 0 To 3
   For n = 1 To 8 Step 1:
    Feuer(2 , 10+m*20, 20+n*5, 0, 0, n+2, m*85) 
   Next n
   For n = 8 To 12 Step 2:
    Feuer(2 , 10+m*20, 20+n*5, 0, 0, n+2, m*85) 
   Next n
   For n = 12 To 8 Step -1:
    Feuer(2 , 10+m*20, 20+n*5, 0, 0, n-5, m*85) 
   Next n
   For n = 12 To 10 Step -1:
    Feuer(2 , 10+m*20, 20+n*5, 0, 0, n-2, m*85) 
    Feuer(2 , 10+m*20, 20+n*5, 0, 0, n-2, m*85) 
   Next n
  Next m

 ClearScreen(64,64,64)

 Start3D()
  For xxx = 0 To 14
   For yyy = 0 To 9
    Sprite3DBlendingMode(xxx,yyy)
    ResetList(F())
    While NextElement(F())
     ZoomSprite3D(F()\F, F()\G*2, F()\G*2)
     DisplaySprite3D(F()\F, F()\x-F()\G+xxx*80, F()\y-F()\G+yyy*100, F()\h)
    Wend
   Next yyy
  Next xxx
 Stop3D()

 StartDrawing(ScreenOutput())
  For xxx = 0 To 14
   For yyy = 0 To 9
    DrawingMode(1|4)
    Line(xxx*80, yyy*100, 80, 0, RGB(128,128,128))
    Line(xxx*80, yyy*100, 0, 100, RGB(128,128,128))
    Locate(xxx*80+2, yyy*100) : DrawText(Str(xxx)+"  "+Str(yyy))
   Next yyy
  Next xxx
 StopDrawing()

 GrabSprite(1000,0,0,1200,1000)
 SaveSprite(1000, "Grafiktest.bmp")

 FlipBuffers()
 
 Delay(2000)
 
 End

Verfasst: 04.09.2006 17:12
von dllfreak2001
thx
aber eigentlich haben sich die sprite3d sachen von pb
von der 3.3 bis 4.0 nicht besonders verändert.(glaube ich)

Verfasst: 04.09.2006 17:15
von Kaeru Gaman
es ist beides DX7.0, also wo soll da der große unterschied sein?

Verfasst: 04.09.2006 17:25
von STARGÅTE
k.A. musst du den fragen der den CODE haben wollte :lol:

Verfasst: 04.09.2006 17:28
von Kaeru Gaman
yo, ich schätze mal, da ist der gute alte Dr. Ice von Shrek übers ziel hinausgeschossen... ;)

Verfasst: 04.09.2006 20:03
von DrShrek
NaNaNa nicht gleich mit den Finger auf Unschuldige zeigen...

Denn:
1) Niemand muss sich die Sourcen ziehen.
2) Es gibt Bug-Reports zu diesen PB-Befehl (mindestens einer von mir)
3) Niemand hat STARGATE gezwungen die Sourcen offenzulegen.

In diesen Sinne... hier noch der angepasste PB4.0 SourceCode (Anpassungen nur soweit notwendig):

Code: Alles auswählen

InitSprite() 
InitSprite3D() 
InitKeyboard() 
OpenScreen(1280, 1024, 32, "GT") 

Structure F1 
 F.l 
 x.f 
 y.f 
 w.f 
 v.f 
 G.f 
 h.f 
EndStructure 
Global NewList F.F1() 
Procedure Feuer(F, x.f, y.f, w.f, v.f, G.f, h.f) 
 AddElement(F()) 
 F()\F = F 
 F()\x = x 
 F()\y = y    
 F()\w = w          
 F()\v = v 
 F()\G = G    
 F()\h = h 
EndProcedure 

b.f = 3.14159265/180 ; Bogenmaß 

 CreateSprite(2, 128, 128, #PB_Sprite_Texture) 
 StartDrawing(SpriteOutput(2)) 
  For n = 1 To 63 
   Circle(64,64,64-n, RGB(n*8/2,n*3/2,n/2)) 
  Next n 
 StopDrawing() 
 CreateSprite3D(2, 2) 


  For m = 0 To 3 
   For n = 1 To 8 Step 1: 
    Feuer(2 , 10+m*20, 20+n*5, 0, 0, n+2, m*85) 
   Next n 
   For n = 8 To 12 Step 2: 
    Feuer(2 , 10+m*20, 20+n*5, 0, 0, n+2, m*85) 
   Next n 
   For n = 12 To 8 Step -1: 
    Feuer(2 , 10+m*20, 20+n*5, 0, 0, n-5, m*85) 
   Next n 
   For n = 12 To 10 Step -1: 
    Feuer(2 , 10+m*20, 20+n*5, 0, 0, n-2, m*85) 
    Feuer(2 , 10+m*20, 20+n*5, 0, 0, n-2, m*85) 
   Next n 
  Next m 

 ClearScreen($404040) 

 Start3D() 
  For xxx = 0 To 14 
   For yyy = 0 To 9 
    Sprite3DBlendingMode(xxx,yyy) 
    ResetList(F()) 
    While NextElement(F()) 
     ZoomSprite3D(F()\F, F()\G*2, F()\G*2) 
     DisplaySprite3D(F()\F, F()\x-F()\G+xxx*80, F()\y-F()\G+yyy*100, F()\h) 
    Wend 
   Next yyy 
  Next xxx 
 Stop3D() 

 StartDrawing(ScreenOutput()) 
  For xxx = 0 To 14 
   For yyy = 0 To 9 
    DrawingMode(1|4) 
    Line(xxx*80, yyy*100, 80, 0, RGB(128,128,128)) 
    Line(xxx*80, yyy*100, 0, 100, RGB(128,128,128)) 
    DrawText(xxx*80+2, yyy*100, Str(xxx)+"  "+Str(yyy)) 
   Next yyy 
  Next xxx 
 StopDrawing() 

 GrabSprite(1000,0,0,1200,1000) 
 SaveSprite(1000, "C:\Grafiktest.bmp") 

 FlipBuffers() 
  
 Delay(2000) 
 
 End 
Und hier mein Ergebnis:
Bild