I find the fact that it has to close windows to display the 3D effect makes the whole thing a bit slow, more when you have a lot of windows opened. I agree a Warp3D version should speed things up.
Anyway, and as I said, good tool.
Saluditos,
Ferr?n.
Amiga user since 1988 AOS4 Betatester Member of ATO Spain A1 Cfg OS4 SCR A1200
Just tried it and it is quite nice. I'm impresed that this was done without Warp3D/OpenGL.
To do this properly, you'd really have to write a complete workbench replacement that uses Warp3D/OpenGL. Alternatively, and probably better (but much more time consuming), would be to patch the intuition and layers library so that windows/screens become OpenGL objects.
So that's the way that a good program like beryl could come to amiga? Is it possible with even the 10% of beryl's futures. I would be a very good program that could bring big interest for amiga by non amiga users!
I remember that there is also a program called caboom which closes windows with a rotate effect. So it could be done by good programmers?
Yes, although I was thinking more of Xgl. However, it is a sizeable project. I think a workbench hack that implements some of the functionality would be faster in the meantime.
An OpenGL based workbench replacement would take quite a bit of work. We'd really need a team of programmers to get it done.
The hardest item I can think of would be to get gadgets to draw themselves onto OpenGL render surfaces without having to rewrite the gadgets themselves. You'd probably have to create a virtual graphics driver that maps graphics library calls to OpenGL ones for OpenGL "bitmaps". Once you have that, things become much easier.
BTW, is there any documentation available about writing graphics drivers for Picasso96? Hans
It is on Hyperions "to-do" list for OS4.x to completely replace the graphics system. APIs like graphics.library, intuition.library, layers.library and Picasso96API.library will still be available, but only as stubs which wrap to the new system.
The new system would be GPU based (OpenGL would be the underlying layer to everything).
To do this properly, you'd really have to write a complete workbench replacement that uses Warp3D/OpenGL. Alternatively, and probably better (but much more time consuming), would be to patch the intuition and layers library so that windows/screens become OpenGL objects.
I don't agree here, in fact the path taken by Switcher3D's author is the good one. To have the desired effect, you only need to : 1) take a snapshot of each window 2) close all opened windows 3) display those snapshots in what ever style (be it in a 3D, vista like, or anything other) in a transparent window 4) provide a way to select of the presented snapshot 5) reopen all previously opened windows (in the same order/place) 6) take to front the window corresponding to the selected snapshot
None of this functions need to patch, hack, replace or anything else system's functions. I see no reasons why you should patch the system by less stable functions, let it be independant and if it ever crash then you could always go on using your system...
Very good idea from the author, now it's obvious, but I must admit I wouldn't have had the idea myself !
Replacement of the graphics system would be nice. It's not going to happen for a while though is it?
@abalaban When I made that comment I was responding more to the aero clone (or Xgl style workbench) than Switcher3D. I think that Switcher3D's author has done a pretty good job, particularly considering that no 3D library was used. You could definitely do quite a bit without patching the OS.
BTW, you could do even more if you created a Picasso96 driver that renders to OpenGL textures (preferably using the GL_EXT_framebuffer_object and GL_ARB_render_texture extensions). That would be a kind of virtual graphics driver. That way screen rotating/scaling effects, etc. would work in realtime (anything animated on the source screen would be animated on the rotated/scaled version as well). Of course, some effects would not be possible without patching intuition/layers/graphics. For example, getting the transparency effects working properly (they currently don't updat properly) would require changes to the graphics subsystem.
@all I have another idea for a useful "widget" for changing screens. A 3D cube sitting in the corner of the screen (or anywhere else) that the user can rotate with the mouse. Different screens are shown on the sides as it rotates. Double-clicking on a screen will switch to that screen. Making it a popup item that can be displayed on whichever screen is currently on top should make it quite useful. I don't have the time to implement it myself at the moment, so if someone else wants to have a go, please do so. It should be fairly easy to do with MiniGL.
I have an feature request, it would be nice to have the possibility to have displayed:
1) only the screens 2) only the windows of the active screen
this way I think that whe have a speed gain and a more readable informations in case of many screens and windows. Something like DepthMenu but in a graphic way.