[squeak-dev] Re: OpenGL into morphic ala lumiere?

Andreas Raab andreas.raab at gmx.de
Thu Mar 25 16:03:00 UTC 2010


On 3/25/2010 8:25 AM, Lawson English wrote:
> More than likely, this is way too advanced for moi, but I spent about an
> hour rummaging through the Lumiere code for Pharo and just couldn't grok
> how the OpenGL rendering is directed to a morph instead of to raw
> coordinates on the main window. Is there some special property of Pharo
> that allows this kind of thing, or is there some relatively simple way
> in Squeak to direct OGL drawing to a morphic surface/canvas/thingie so
> it renders inside the boundaries of the morph when moved?

There is absolutely nothing to it. All you need is something like here:

MyMorph>>drawOn: aCanvas

	"--- initialize opengl ---"
	ogl ifNil:[
		ogl := OpenGL newIn: self bounds.
		ogl ifNil:[^super drawOn: aCanvas].
	] ifNotNil:[
		ogl bufferRect: self bounds.
	].

	"--- when not rendering to Display, draw last captured frame ---"
	aCanvas form == Display ifFalse:[
		^aCanvas drawImage: ogl screenShot at: bounds origin.
	].

	"--- otherwise do normal scene rendering ---"
	^self renderScene: ogl.

Cheers,
   - Andreas



More information about the Squeak-dev mailing list