TextureBuffer + DrawMovie

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

ToeB

Betreff: TextureBuffer + DrawMovie

BeitragMi, Okt 21, 2009 14:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Weiß einer warum ich kein Movie in einen TextureBuffer zeichnen kann ??

mfg ToeB
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art
SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek
Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt!

Silver_Knee

BeitragMi, Okt 21, 2009 15:38
Antworten mit Zitat
Benutzer-Profile anzeigen
renders auf dem Bildschirm und CopyRect

SYSThern

BeitragMi, Okt 21, 2009 15:38
Antworten mit Zitat
Benutzer-Profile anzeigen
hi

vll solltest du die texture dauernd update? new zeichnen

ich denke das es deswegen nciht geht oder kommt ein fehler

er zeichnet wahrscheinlich nur das erste bild un sonst nix mehr

mfg SYSthern
Tools and Programms
--------------------
www.systhern.de

ToeB

BeitragMi, Okt 21, 2009 15:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Also ich wollte es ja ohne CopyRect machen weil das in 3D so lahm ist (copyrect von einem 320*240 Bild dauert ~60ms). Und es wird ja gar nix gemalt (noch nichtmal das erste bild). Hier mal der gesammte code :

Code: [AUSKLAPPEN]
Graphics3D 800,600,16,2
SetBuffer BackBuffer()

Global BGBuffer = BackBuffer()

Global Camera = CreateCamera()
   CameraClsColor Camera,64,64,64

Global Movie = Load3DMovie("Vid2.avi")

;If Movie = 0RuntimeError("Konnte kein Movie laden !")

Global Cube = CreateCube()
PositionEntity Cube,0,0,3
EntityTexture Cube,GetMovie3DTexture(Movie)

Global mss,times

Repeat

   TurnEntity Cube,2,2,2
   
   ms = MilliSecs()
   Update3DMovie()
   time = MilliSecs() - ms
   
   ;If Movie3DPlaying(Movie) = 0
      ;Replay3DMovie(Movie)
   ;EndIf
   
   RenderWorld()
   
   Text 0,0,time
   Text 0,13,times
   
   Flip 0
   Cls
   
Until KeyHit(1)
End



Type movie3D
   Field movie
   Field texture,TexBuffer
   Field sizex,sizey,sizet
   Field handlex,handley
   Field Pfad$
End Type


Function Load3DMovie(Pfad$,texsize=256)
   tmp.movie3D = New movie3D
   tmp\movie = OpenMovie(Pfad$)
   If tmp\movie = 0 Delete tmp : Return 0
   sizex# = MovieWidth(tmp\movie)
   sizey# = MovieHeight(tmp\movie)
   tmp\sizex = sizex
   tmp\sizey = sizey
   tmp\sizet = texsize
   tmp\texture = CreateTexture(tmp\sizet,tmp\sizet)
   If tmp\texture = 0 CloseMovie(tmp\movie) : Delete tmp : Return 0
   tmp\texbuffer = TextureBuffer(tmp\texture)
   tmp\handlex = tmp\sizet / 2.0
   tmp\handley = tmp\sizet / 2.0
   tmp\Pfad$ = Pfad$
   Return Handle(tmp)
End Function

Function Update3DMovie()
   ;GRBuffer = GraphicsBuffer()
   For tmp.movie3D = Each movie3D
      SetBuffer tmp\texbuffer
      DrawMovie(tmp\movie,0,0)
      ;mss = MilliSecs()      
      ;CopyRect(0,0,tmp\sizex,tmp\sizey,tmp\handlex-tmp\sizex/2,tmp\handley-tmp\sizey/2,BGBuffer,tmp\texbuffer)
      ;times = MilliSecs() - mss
   Next
   SetBuffer BGBuffer
End Function

Function GetMovie3DTexture(Han)
   tmp.movie3D = Object.movie3D(Han)
   If tmp <> Null
      Return tmp\texture
   EndIf
End Function

Function Movie3DPlaying(han)
   tmp.movie3D = Object.movie3D(Han)
   If tmp <> Null
      Return MoviePlaying(tmp\movie)
   EndIf
End Function

Function Replay3DMovie(han)
   tmp.movie3D = Object.movie3D(Han)
   If tmp <> Null
      CloseMovie(tmp\movie)
      tmp\movie = OpenMovie(tmp\Pfad$)
   EndIf
End Function

   
   

   
Function GetPot(zahl)
   start = 1
   ende = 1024
   zahl2 = start
   count = 1
   While zahl2 < zahl
      zahl2 = 2^count
      count = count + 1
   Wend
   Return Zahl2
End Function


mfg ToeB
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art
SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek
Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt!

SYSThern

BeitragMi, Okt 21, 2009 15:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
Graphics3D 1024,768,32,2
SetBuffer BackBuffer()

Global videotexture=CreateTexture(720,536)

movie = OpenMovie("deinmovie.avi")
cube = CreateCube()
camera=CreateCamera()
CameraClsColor camera,255,255,255
light1=CreateLight()
PositionEntity camera,0,0,-5
While Not KeyHit(1)
   
   If MoviePlaying(movie) = 0 Then
      CloseMovie movie
      movie = OpenMovie("movie.avi")
   End If
   SetBuffer TextureBuffer(videotexture)
   
   DrawMovie movie,0,0
   
   SetBuffer BackBuffer()
   PointEntity camera,cube
   
   EntityTexture cube,videotexture
   TurnEntity cube,0,1,0
   
   RenderWorld
   
   Text 0, 0, "Breite: " + MovieWidth(movie)
   Text 0, 20, "Höhe: " + MovieHeight(movie)
   
   Flip 0
   
Wend

CloseMovie movie
End


das funzt bei mir
scnell hingeschrieben ersetz einfach deinmovie mit dem namen deines videos

mfg SYSThern
Tools and Programms
--------------------
www.systhern.de

mpmxyz

BeitragMi, Okt 21, 2009 15:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich hatte mal ein Speed-Problem bei einer auf 3D basierenden Blur-Funktion.

Du solltest beim "CreateTexture" den Modus "256" nutzen.
Dann sind die Texturen nur im Grafikkartenspeicher.
Das bringt mehr Geschwindigkeit, als man denkt!

mfG
mpmxyz
Moin Moin!
Projekte: DBPC CodeCruncher Mandelbrot-Renderer

ToeB

BeitragMi, Okt 21, 2009 15:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Aso dann liegts daran dasss die Texture GRÖßER seinen muss als das Video !!

Danke Wink

mfg ToeB
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art
SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek
Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt!

SYSThern

BeitragMi, Okt 21, 2009 16:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Hier hab ich noch eine Function zum zeichnen eines videos auf eine texture gemacht

Code: [AUSKLAPPEN]
Function MovieToTexture(movie,x#=0,y#=0,entity,videotexture)
   
   SetBuffer TextureBuffer(videotexture)
   
   DrawMovie movie,x#,y#
   
   SetBuffer BackBuffer()
   
   
   EntityTexture entity,videotexture
   
End Function



Code: [AUSKLAPPEN]
parameter:
movie=das video das angezeigt werden soll mit OpenMovie
x#=die x-position des movies
y#=die y-position des movies
entity=das entity auf das die texture gezeichnet werden soll
videotexture= eine texture mit CreateTexture(x,y,[flag],[frame])
am besten mit flag 256

das ganze muss in die hauptschleife vor Renderworld


mfg SYSthern

mfg SYSThern
Tools and Programms
--------------------
www.systhern.de

Nicdel

BeitragMi, Okt 21, 2009 16:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich glaube, dass das fast jeder hinbekommen hätte Smile
Desktop: Intel Pentium 4 2650 Mhz, 2 GB RAM, ATI Radeon HD 3850 512 MB, Windows XP
Notebook: Intel Core i7 720 QM 1.6 Ghz, 4 GB DDR3 RAM, nVidia 230M GT, Windows 7

SYSThern

BeitragMi, Okt 21, 2009 16:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Razz

hatte halt lust dazu und sp hat sich meine SYSTech gleich um etwas erweitert Very Happy
Tools and Programms
--------------------
www.systhern.de

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group