On 11/5/06, Bert Freudenberg bert@freudenbergs.de wrote:
Am 05.11.2006 um 12:27 schrieb Mikael Kindborg:
Have also been experimenting with Tweak which is really nice, but as I understand it Tweak, like Morphic, uses standard Squeak Forms and Display to render graphics.
Tweak does not use Display directly. This allows for rendering to multiple display surfaces simultaneously, like when using Host Windows (a.k.a. Areithfa Ffenestri). Also, an experimental version of Tweak exists that uses Rome for rendering, although this also writes to Display in the end for now.
Ok, that sounds great. I will look at how Tweak does its rendering. I was thinking it used Display since a Tweak Morphic window works together with other Morphic windows, but that is perhaps a special case, when running Tweak in Morphic, or perhaps I miss something about how the rendering process works.
What concerns me is the blit speed of Form and Display. Have searched the mailing list and the swiki and obviously there are lots of issues that have been up for discussion previously, like conversion between pixel formats, endianness, etc. Have seen mention of FXBlt, ExternalForm, and ExternalScreen, which seems to be in the Balloon3D package (which has been replaced by Croquet?).
No, FXBlt has been rolled into regular BitBlt. You can use BitBlt to render to any surface registered via SurfacePlugin. Like, RomePlugin registers Cairo surfaces that can be used as source or destination of BitBlt.
I will look at the surface plugin, sounds promising!
I am confused about the current status of Squeak technologies for high speed graphics. From what I understand, Croquet is the most recent work in this area, based on OpenGL.
Yes, which also is a severe limitation for general use as there is one important platform lacking good general OpenGL support.
What platform is that?
I have found SDL to be a very good library, have been working with SDL in Python, using the Pygame library. It has good blitting performance (will post some performance tests later on, comparing Pygame to Squeak). Pygame/SDL uses bitmaps in the current format of the display screen, and I would like to look at how this could be done in Squeak.
As I understand it, there are two ways of using libraries like OpenGL and SDL in Squeak:
- As an "add on" that bypasses the Display, and renders "on top of"
Morphic/Tweak. This is how I understand that Croquet works. Drawback is you cannot use Morphic/Tweak but have to do your own UI system (like the one in Croquet).
Actually, Tweak or Morphic run fine as an overlay inside an OpenGL window. That's how Plopp implements its UI, for example.
Well, that is extremely nice, does that boost performance of Tweak/Morphic or is it mainly a way to integrate the UI with the 3D objects?
- As an integrated part of the VM, making Display and Forms use the
native display format. Then you could use Morphic/Tweak with the best performance.
Actually I think Forms are outdated now, you really want a vector graphics API. So what would be best IMHO is opening a host window and a canvas on its surface, then using canvas commands to draw onto it. I think we have almost all needed bits in place (Host Window Plugin, Rome Plugin), they just need to be integrated.
Ok, great! I have to learn how this works. Why are forms outdated? Are there other, better, options when working with bitmapped graphics? Like rendering bitmaps in OpenGL? If I draw on the canvas (I assume you mean a Squeak canvas) then it renders transparently onto the host window surface?
Many thanks indeed for your pointers!
Best, Micke