Hi IlovePascal,

I'm no expert, but if my understanding is correct, its all about the rendering context.

I don't know anything about LazyOpenGL, but with normal OpenGL (dglOpenGL headers) you'd have something like this to create and activate a rendering context.

[pascal]
fDC:=getDC(pnlGL.handle);
fGLRC:=createRenderingContext(fDC,[opDoubleBuffered],32,24,0,0,0,0);
activateRenderingContext(fDC,fGLRC);
[/pascal]

Assuming you want to draw on two (in this case) panels, you'd probably do something like this.

[pascal]
fPanel1DC:=getDC(pnl1.handle);
fPanel2DC:=getDC(pnl2.handle);
fPanel1GLRC:=createRenderingContext(fPanel1DC,[opDoubleBuffered],32,24,0,0,0,0);
fPanel2GLRC:=createRenderingContext(fPanel2DC,[opDoubleBuffered],32,24,0,0,0,0);
[/pascal]

Then, when you want to draw on panel 1....

[pascal]
activateRenderingContext(fPanel1GLRC);
...
(* DO YOUR PANEL 1 DRAWING HERE *)
...
deactivateRenderingContext;
[/pascal]

And likewise for panel 2...

[pascal]
activateRenderingContext(fPanel2GLRC);
...
(* DO YOUR PANEL 2 DRAWING HERE *)
...
deactivateRenderingContext;
[/pascal]

As I say, this should work if my understanding of OpenGL is correct. As for how to handle this when its spread across multiple forms... I'm afraid you're on your own with that one, just be aware that you can only have one rendering context active at once.