immer mal kurz nen Hänger hat.
Unterschiedlich. Man kann das bild aber auch mit RenderMovieFrame() auf ein Sprite rendern. Allerdings nicht alle Sorten von movies. (Ich dachte von ner DVD, Das geht nämlich nicht mit PB.)
Code Braucht einen Film, und die Ogre Lib.
Code: Alles auswählen
InitEngine3D()
InitSprite()
InitMouse()
InitKeyboard()
InitSound()
InitMovie()
OpenScreen(800,600,32,"Movie Cube")
Add3DArchive("data\",#PB_3DArchive_FileSystem )
#TextureName_SkyDone = "clouds.jpg"
SkyDome(#TextureName_SkyDone, 1)
CreateCamera(0,0,0,100,100)
CameraLocate(0,0,0,50)
Sprite = CreateSprite(1, 320, 320, #PB_Sprite_Texture)
CreateTexture(1, 320, 320)
CreateSprite(2, 320, 320,0)
CreateSprite(3, 800, 600,0)
CreateMaterial(1, TextureID(1))
;{ Create Cube
CreateMesh(0) ; Cube
SetMeshData(0, 0, ?CubePoints , 48)
SetMeshData(0, 1, ?CubeTriangles , 12)
SetMeshData(0, 2, ?CubeTextures , 4);64)
SetMeshData(0, 3, ?CubeNormales , 64)
CreateCamera(0,0,0,100,100)
CameraLocate(0,0,0,50)
DataSection
CubePoints:
Data.f -10,-10,-10
Data.f -10,-10,10
Data.f 10,-10,10
Data.f 10,-10,-10
Data.f -10,10,-10
Data.f -10,10,10
Data.f 10,10,10
Data.f 10,10,-10
Data.f -10,-10,-10
Data.f -10,-10,10
Data.f 10,-10,10
Data.f 10,-10,-10
Data.f -10,10,-10
Data.f -10,10,10
Data.f 10,10,10
Data.f 10,10,-10
CubeNormales:
Data.f -0.5,0,-0.5
Data.f -0.5,0,0.5
Data.f 0.5,0,0.5
Data.f 0.5,0,-0.5
Data.f -0.5,0,-0.5
Data.f -0.5,0,0.5
Data.f 0.5,0,0.5
Data.f 0.5,0,-0.5
Data.f 0,1,0
Data.f 0,1,0
Data.f 0,1,0
Data.f 0,1,0
Data.f 0,-1,0
Data.f 0,-1,0
Data.f 0,-1,0
Data.f 0,-1,0
CubeTriangles:
Data.w 0,4,7
Data.w 0,7,3
Data.w 1,5,4
Data.w 1,4,0
Data.w 2,6,5
Data.w 2,5,1
Data.w 3,7,6
Data.w 3,6,2
Data.w 9,8,11
Data.w 9,11,10
Data.w 12,13,14
Data.w 12,14,15
CubeTextures:
Data.f 0,0
Data.f 0,1
Data.f 1,1
Data.f 1,0
Data.f 0,0
Data.f 0,1
Data.f 1,1
Data.f 1,0
Data.f 0,0
Data.f 0,1
Data.f 1,1
Data.f 1,0
Data.f 0,0
Data.f 0,1
Data.f 1,1
Data.f 1,0
EndDataSection
CreateEntity(0, MeshID(0), MaterialID(1))
;}
LoadMovie(0,"1.avi" ) ;OpenFileRequester() Hier Das movie
PlayMovie(0, #PB_Movie_Rendered)
Image = CreateImage(1,320,320)
DC.l = GetDC_(ScreenID())
Repeat
FlipBuffers()
ClearScreen(0,0,0)
ExamineKeyboard()
ExamineMouse()
;
RotateEntity(0,0.1,0.1,0.1)
If KeyboardPushed(#PB_Key_Left)
KeyX = -1
ElseIf KeyboardPushed(#PB_Key_Right)
KeyX = 1
Else
KeyX = 0
EndIf
If KeyboardPushed(#PB_Key_Up)
KeyY = -1
ElseIf KeyboardPushed(#PB_Key_Down)
KeyY = 1
Else
KeyY = 0
EndIf
; KeyZ = MouseWheel()*50
RotateCamera(0,-1*MouseDeltaX(),-1*MouseDeltaY(),0)
MoveCamera(0, KeyX, KeyZ, KeyY)
RenderWorld()
GrabSprite(3, 0, 0, 800, 600 )
ClearScreen(0,0,0)
RenderMovieFrame(Sprite)
;MovieInfo(0)
DisplaySprite(1,0,0)
; make ScreenShot
hDC = StartDrawing(ImageOutput())
BitBlt_(hDC,0,0,320,320,GetDC_(GetDesktopWindow_()),0,0,#SRCCOPY)
StopDrawing()
;
; StartDrawing(SpriteOutput(1))
; For x = 0 To 319
; For y = 0 To 199
; Arrey(x,y) = Point(x,y)
; Next
; Next
; StopDrawing()
;
; StartDrawing(TextureOutput(1))
; For x = 0 To 319
; For y = 0 To 199
; Plot(x,y,Arrey(x,y))
; Next
; Next
; StopDrawing()
ClearScreen(0,0,0)
;
; StartDrawing(ScreenOutput())
; DrawImage(1,0,0)
; StopDrawing()
StartDrawing(TextureOutput(1))
;ResizeImage(1, 640,640 )
DrawImage(ImageID(),0,0,512,512);Box(0,0,640,640,RGB(255,255,0));
StopDrawing()
StartDrawing(ScreenOutput())
;DrawImage(ImageID(),0,0)
StopDrawing()
ClearScreen(0,0,0)
DisplaySprite(3,0,0)
DisplaySprite(1,0,0)
Until KeyboardPushed(#PB_Key_Escape)
ReleaseDC_(ScreenID(),DC)
End
Der code ist ein bisschen älter Die Textur Parameter stimmen nicht, PB 3.94. Der film wird erst auf ein Sprite dann auf den Screen und dann zu einem Image gegrappt, da ich keine Möglichkeit kenne ein Sprite (schnell) zu einem Image zu machen, und dann auf dieTextur gemahlt.