Setbuffer where did it go?
BlitzMax Forums/BlitzMax Beginners Area/Setbuffer where did it go?| 
 | ||
| Where did it go to my wee Barry Burtons? I remember arsing around with Blitz+ and being able to draw to the desktop by going Setbuffer(Desktopbuffer()) or something like that. Is that not achievable in BlitzMax GUI? What would Rebecca Chambers say? | 
| 
 | ||
| Do a search for that topic | 
| 
 | ||
| It's not achievable in BlitzMAX period.  No such thing as imagebuffers. | 
| 
 | ||
| Oh yes there is, you can render to a texture! Function Render2Image(image:TImage) Local DXFrame:TDX7ImageFrame = TDX7ImageFrame (image.frame(0)) PrimaryDevice.Device.SetRenderTarget DXFrame.Surface,0 End Function Only thing is I have not had the time to get the handle to the backbuffer so I can change it back again :) So it's a one-way solution at the moment. | 
| 
 | ||
| It's the price we pay for having hardware accelerated graphics in bmax. There are -very slow- ways to do it though. | 
| 
 | ||
| it's stinky.  One way haha. | 
| 
 | ||
| what? | 
| 
 | ||
| Just ignore him.  =]  Oh yes there is, you can render to a texture!  Can we have an OpenGL version of that function as well, pretty please? ;] | 
| 
 | ||
| It's the price we pay for having hardware accelerated graphics in bmax. There are -very slow- ways to do it though. = stinky Only thing is I have not had the time to get the handle to the backbuffer so I can change it back again :) So it's a *one-way* solution at the moment. = one way haha | 
| 
 | ||
| Oh I am so stupid muuuhhhhaaa. Strict Function Render2Image(image:TImage,frame:int=0) Local DXFrame:TDX7ImageFrame = TDX7ImageFrame (image.frame(frame)) PrimaryDevice.Device.SetRenderTarget DXFrame.Surface,0 End Function Function Render2BackBuffer() PrimaryDevice.Device.SetRenderTarget PrimaryDevice.backbuffer,0 End Function Switch it baby! {EDIT} Now with multiframe render :D | 
| 
 | ||
| Hmm, Tim have you got a simple example as I'm sure I have this wrong... 
Strict
Function Render2Image(image:TImage,frame:Int=0)
	Local DXFrame:TDX7ImageFrame = TDX7ImageFrame (image.frame(frame))
	PrimaryDevice.Device.SetRenderTarget DXFrame.Surface,0
End Function
Function Render2BackBuffer()
	PrimaryDevice.Device.SetRenderTarget PrimaryDevice.backbuffer,0
End Function
Graphics 640,480
Global myimage:TImage=LoadImage("max.png")
While Not KeyHit(KEY_ESCAPE)
  Cls
  If MouseHit(1)
     render2image(myimage)
     DrawRect 0,0,40,40
  EndIf
   render2backbuffer()
  DrawImage myimage,0,0
  Flip
Wend
 | 
| 
 | ||
| Like I said I have not finished this yet, the above code will swap the target but I think there is something else that needs to happen, a bit like the old Renderworld command in B3D. Function Renderworld() PrimaryDevice.Device.EndScene() PrimaryDevice.Device.BeginScene() End Function Still don't work though. | 
| 
 | ||
| Hey if you click in the window then the white square flashes up! | 
| 
 | ||
| Yep, but it doesn't get saved as part of the image which is what I thought it would do. | 
| 
 | ||
| Just figured how to do this. I'll post an example when it's working as it should. |