Suggestions needed on multiwindow implementation for SDL

This message is about how to add multiple window support to SDL. It is
not about how to do multiple windows using the current version of SDL.

Last fall I spent a lot of time working on adding multiple window
support to SDL. I got as far as having a version of SDL that can create
multiple top level windows under X. (I work on Linux so X was it.) I
stopped working on it at Christmas time and and have been mostly not
working on it since.

The main reason for not working on it is that I don’t like the solution
I have come up with for a problem I ran into when I started looking at
adding multiple window support for devices that don’t have a window
manager. SDL works just fine on any device that has a dumb frame buffer.
It just takes over the screen and lets you blit to it and do what you
want.

One of the reasons that SDL applications are so portable, and why SDL is
so portable, is that it treats a window as just another dumb frame
buffer. To SDL everything is just a collection of pixels. (Sure, I’m
ignoring OpenGL right now, so don’t worry about it.) The key is that SDL
only gives you one visible surface and it treats every visible surface
as a frame buffer that might change size once in a while. This feature
of SDL is a glorious thing.

So, when I started adding multiple windows to SDL I just extended that
concept. I added APIs to let you create more than one window and added a
window ID to events. This worked great. And, it looks like it can be
extended to support sub-windows within top level windows.

The problem comes when you start to add multiple window support for
things like the frame buffer driver or the DGA driver. A window on X or
MS Windows is embedded in a desktop. Each SDL window is just another
window on the desktop. It may, or may not, have a border and window
decorations. But, the key is that every top level SDL window is actually
a sub-window of the desktop’s root window. The trouble with implementing
multiple windows on the frame buffer or DGA driver (and I expect the new
ipod driver) is that there is now root window. There is only the frame
buffer and SDL takes over the whole thing.

So, in that situation what do you do when someone asks to create a new
top level window after they have already created a top level window
(which is the whole screen)? I’m stuck in a box here and I need someone
to open a window for me so I can get out of the box. :slight_smile:

I see several different ways to go in solving this problem:

1)Treat the whole frame buffer as the top level window and create SDL
windows that are embedded in it. That is, duplicate many of the
functions of a window manager in side SDL. This approach would allow SDL
applications to be portable across operating systems and devices. I’m
not sure how much code would be needed because I’m not sure how many new
functions would have to be added.

On the down side, this approach requires that the new API include
functions for manipulating the root window (functions that may not work
on windowing systems) or requires that we select a fixed background for
the root window. It also requires that we provide an SDL standard window
border and decorations for windows. I get really nervous about our
ability to make a decision about the look and feel of an SDL “window
manager”. But, I get even more nervous about the API and code bloat
involved in making all this stuff customizable by the application.
Perhaps we should only support borderless windows and make the
applications draw the border and window decorations allowing that part
of the problem to be pushed off onto a library rather than forcing the
code to reside in SDL.

  1. Only allow a single top level window no matter what the underlying
    system but support sub-windows on all systems. This approach can be
    implemented on all devices and on devices with window managers it is
    almost as flexible as having multiple top level windows. But, again, we
    get into the problem of having to supply something like a window manager
    inside of SDL with all the potential problems that that entails.

  2. Treat the multiple window API the same way we currently treat OpenGL.
    If you aren’t on a system that supports OpenGL, you don’t get to use it.
    So, we could limit the multiple window API to only work on systems with
    a windowing system.

  3. I have also considered that on a frame buffer devices each top level
    window could be a full screen window so that only one window and its
    sub-windows visible at a time. This would be very much like option #2.

I would love to hear any suggestions, comments, or alternate approaches.
I am not particularly happy with any of these solutions. Solution #3 is
the easiest to implement. The other solutions all have pretty much the
same level of difficulty.

	Bob Pendleton-- 

±-------------------------------------+

Last fall I spent a lot of time working on adding multiple window
support to SDL. I got as far as having a version of SDL that can create
multiple top level windows under X.

Care to make that available for download? I’d like to take a look at it.

  1. Treat the multiple window API the same way we currently treat OpenGL.
    If you aren’t on a system that supports OpenGL, you don’t get to use it.
    So, we could limit the multiple window API to only work on systems with
    a windowing system.

That works for me :slight_smile:

I would love to hear any suggestions, comments, or alternate approaches.
I am not particularly happy with any of these solutions. Solution #3 is
the easiest to implement.

Great, since that would be my choice anyway :wink:

My 2 cents,
JeffOn Monday 20 June 2005 12:08 pm, Bob Pendleton wrote:

So, in that situation what do you do when someone asks to create a new
top level window after they have already created a top level window
(which is the whole screen)? I’m stuck in a box here and I need someone
to open a window for me so I can get out of the box. :slight_smile:

I vote for the lazy implementor’s standpoint: fail to create a second
"window", return an error.

Sometimes a framebuffer is just a framebuffer, and frankly, anyone
needing multiple windows is assuming you’re going to run it on something
with a real window manager.

1)Treat the whole frame buffer as the top level window and create SDL
windows that are embedded in it. That is, duplicate many of the
functions of a window manager in side SDL. This approach would allow SDL
applications to be portable across operating systems and devices. I’m
not sure how much code would be needed because I’m not sure how many new
functions would have to be added.

No, god no.

–ryan.

[…]

  1. Treat the multiple window API the same way we currently treat
    OpenGL. If you aren’t on a system that supports OpenGL, you don’t
    get to use it. So, we could limit the multiple window API to only
    work on systems with a windowing system.

That works for me :slight_smile:

++votes;

I would love to hear any suggestions, comments, or alternate
approaches. I am not particularly happy with any of these
solutions. Solution #3 is the easiest to implement.

Well, what I’m wondering is where multihead support fits into this?
(Though I’ve moved from a dual head setup to a single, huge display
myself, but anyway…)

Though I definitely would like a solution that works for "normal"
windows as well (that’s actually what I’m most interested in), I
remember multihead support being pronounced the primary motivation
behind support for more than one display surface in SDL.

//David Olofson - Programmer, Composer, Open Source Advocate

.- Audiality -----------------------------------------------.
| Free/Open Source audio engine for games and multimedia. |
| MIDI, modular synthesis, real time effects, scripting,… |
`-----------------------------------> http://audiality.org -’
http://olofson.nethttp://www.reologica.se —On Monday 20 June 2005 23.15, Jeff wrote:

Bob Pendleton wrote:

I would love to hear any suggestions, comments, or alternate approaches.
I am not particularly happy with any of these solutions. Solution #3 is
the easiest to implement. The other solutions all have pretty much the
same level of difficulty.

IMO the only correct approach to allow the program to create only one
output device per physical monitor attached to the computer.
Multi-window support should be seen as an emulation of multiple
monitors, just as single-window support is currently treated as a
emulation of running full-screen.–
Rainer Deyke - rainerd at eldwood.com - http://eldwood.com

im for this way too, sounds good.> ----- Original Message -----

From: david@olofson.net (David Olofson)
To: <j_post at pacbell.net>; “A list for developers using the SDL library.
(includesSDL-announce)”
Sent: Monday, June 20, 2005 3:04 PM
Subject: Re: [SDL] Suggestions needed on multiwindow implementation for SDL

On Monday 20 June 2005 23.15, Jeff wrote:
[…]

  1. Treat the multiple window API the same way we currently treat
    OpenGL. If you aren’t on a system that supports OpenGL, you don’t
    get to use it. So, we could limit the multiple window API to only
    work on systems with a windowing system.

That works for me :slight_smile:

++votes;

I would love to hear any suggestions, comments, or alternate
approaches. I am not particularly happy with any of these
solutions. Solution #3 is the easiest to implement.

Well, what I’m wondering is where multihead support fits into this?
(Though I’ve moved from a dual head setup to a single, huge display
myself, but anyway…)

Though I definitely would like a solution that works for "normal"
windows as well (that’s actually what I’m most interested in), I
remember multihead support being pronounced the primary motivation
behind support for more than one display surface in SDL.

//David Olofson - Programmer, Composer, Open Source Advocate

.- Audiality -----------------------------------------------.
| Free/Open Source audio engine for games and multimedia. |
| MIDI, modular synthesis, real time effects, scripting,… |
`-----------------------------------> http://audiality.org -’
http://olofson.nethttp://www.reologica.se


SDL mailing list
SDL at libsdl.org
http://www.libsdl.org/mailman/listinfo/sdl

[Bob Pendleton]
3) Treat the multiple window API the same way we currently treat
OpenGL. If you aren’t on a system that supports OpenGL, you don’t
get to use it.
So, we could limit the multiple window API to only work on
systems with a windowing system.

[Ryan C. Gordon]
Sometimes a framebuffer is just a framebuffer, and frankly, anyone
needing multiple windows is assuming you’re going to run it on
something with a real window manager.

I agree with both. I think this is the most (only?) sane thing to do.

    --Gabriel

'lo Bob,On 20/06/2005, Bob Pendleton, you wrote:

  1. Treat the multiple window API the same way we currently treat
    OpenGL. If you aren’t on a system that supports OpenGL, you don’t get
    to use it. So, we could limit the multiple window API to only work on
    systems with a windowing system.

Sounds logical, especially since (I’m guessing) most devices that don’t
support windows probably have a tiny screen where multiple windows
would be a pain (and/or got no mouse to manipulate the windows…).

If multiple windows had to be implemented on such devices, then I’d
suggest full screen windows with a simple menu to select the frontmost
one…

Regards

Olivier.
Please remove “.ARGL.invalid” from my email when replying.
Incoming HTML mails are automatically deleted.

Is there any site about this multi window support?

Thanks,

Bruno> im for this way too, sounds good.

----- Original Message -----
From: “David Olofson”
To: <j_post at pacbell.net>; “A list for developers using the SDL library.
(includesSDL-announce)”
Sent: Monday, June 20, 2005 3:04 PM
Subject: Re: [SDL] Suggestions needed on multiwindow implementation for SDL

On Monday 20 June 2005 23.15, Jeff wrote:
[…]

  1. Treat the multiple window API the same way we currently treat
    OpenGL. If you aren’t on a system that supports OpenGL, you don’t
    get to use it. So, we could limit the multiple window API to only
    work on systems with a windowing system.

That works for me :slight_smile:

++votes;

I would love to hear any suggestions, comments, or alternate
approaches. I am not particularly happy with any of these
solutions. Solution #3 is the easiest to implement.

Well, what I’m wondering is where multihead support fits into this?
(Though I’ve moved from a dual head setup to a single, huge display
myself, but anyway…)

Though I definitely would like a solution that works for "normal"
windows as well (that’s actually what I’m most interested in), I
remember multihead support being pronounced the primary motivation
behind support for more than one display surface in SDL.

//David Olofson - Programmer, Composer, Open Source Advocate

.- Audiality -----------------------------------------------.
| Free/Open Source audio engine for games and multimedia. |
| MIDI, modular synthesis, real time effects, scripting,… |
`-----------------------------------> http://audiality.org -’
http://olofson.nethttp://www.reologica.se


SDL mailing list
SDL at libsdl.org
http://www.libsdl.org/mailman/listinfo/sdl


SDL mailing list
SDL at libsdl.org
http://www.libsdl.org/mailman/listinfo/sdl

So, in that situation what do you do when someone asks to create a new
top level window after they have already created a top level window
(which is the whole screen)? I’m stuck in a box here and I need someone
to open a window for me so I can get out of the box. :slight_smile:

I vote for the lazy implementor’s standpoint: fail to create a second
"window", return an error.

I like the way you think!

Sometimes a framebuffer is just a framebuffer, and frankly, anyone
needing multiple windows is assuming you’re going to run it on something
with a real window manager.

What about sub-windows? There is a need for SDL to support pop-up boxes
in a standard way on all platforms. And, supporting sub-windows gets you
into all the same complexity as supporting multiple top level windows.

1)Treat the whole frame buffer as the top level window and create SDL
windows that are embedded in it. That is, duplicate many of the
functions of a window manager in side SDL. This approach would allow SDL
applications to be portable across operating systems and devices. I’m
not sure how much code would be needed because I’m not sure how many new
functions would have to be added.

No, god no.

Yeah, my reaction too, but every time I try to think my way out of this
I wind up needing most of this functionality.On Mon, 2005-06-20 at 17:45 -0400, Ryan C. Gordon wrote:

–ryan.


SDL mailing list
SDL at libsdl.org
http://www.libsdl.org/mailman/listinfo/sdl


±-------------------------------------+

[…]

  1. Treat the multiple window API the same way we currently treat
    OpenGL. If you aren’t on a system that supports OpenGL, you don’t
    get to use it. So, we could limit the multiple window API to only
    work on systems with a windowing system.

That works for me :slight_smile:

++votes;

I would love to hear any suggestions, comments, or alternate
approaches. I am not particularly happy with any of these
solutions. Solution #3 is the easiest to implement.

Well, what I’m wondering is where multihead support fits into this?
(Though I’ve moved from a dual head setup to a single, huge display
myself, but anyway…)

I don’t know. I haven’t even thought about it. I don’t have any way to
work on it. So, for now, I am going to ignore it.On Tue, 2005-06-21 at 00:04 +0200, David Olofson wrote:

On Monday 20 June 2005 23.15, Jeff wrote:

Though I definitely would like a solution that works for "normal"
windows as well (that’s actually what I’m most interested in), I
remember multihead support being pronounced the primary motivation
behind support for more than one display surface in SDL.

//David Olofson - Programmer, Composer, Open Source Advocate

.- Audiality -----------------------------------------------.
| Free/Open Source audio engine for games and multimedia. |
| MIDI, modular synthesis, real time effects, scripting,… |
`-----------------------------------> http://audiality.org -’
http://olofson.nethttp://www.reologica.se


SDL mailing list
SDL at libsdl.org
http://www.libsdl.org/mailman/listinfo/sdl


±-------------------------------------+

Bob Pendleton wrote:

I would love to hear any suggestions, comments, or alternate approaches.
I am not particularly happy with any of these solutions. Solution #3 is
the easiest to implement. The other solutions all have pretty much the
same level of difficulty.

IMO the only correct approach to allow the program to create only one
output device per physical monitor attached to the computer.
Multi-window support should be seen as an emulation of multiple
monitors, just as single-window support is currently treated as a
emulation of running full-screen.

Ok, I’m not sure I understand what you mean. I think you just said that
you should only be allowed to have one window per monitor, even on
systems with a window manager. Is that correct?

	Bob PendletonOn Mon, 2005-06-20 at 17:28 -0600, Rainer Deyke wrote:


±-------------------------------------+

Is there any site about this multi window support?

No.

	Bob PendletonOn Tue, 2005-06-21 at 09:53 -0300, Bruno Sanches wrote:

Thanks,

Bruno

im for this way too, sounds good.

----- Original Message -----
From: “David Olofson”
To: <j_post at pacbell.net>; “A list for developers using the SDL library.
(includesSDL-announce)”
Sent: Monday, June 20, 2005 3:04 PM
Subject: Re: [SDL] Suggestions needed on multiwindow implementation for SDL

On Monday 20 June 2005 23.15, Jeff wrote:
[…]

  1. Treat the multiple window API the same way we currently treat
    OpenGL. If you aren’t on a system that supports OpenGL, you don’t
    get to use it. So, we could limit the multiple window API to only
    work on systems with a windowing system.

That works for me :slight_smile:

++votes;

I would love to hear any suggestions, comments, or alternate
approaches. I am not particularly happy with any of these
solutions. Solution #3 is the easiest to implement.

Well, what I’m wondering is where multihead support fits into this?
(Though I’ve moved from a dual head setup to a single, huge display
myself, but anyway…)

Though I definitely would like a solution that works for "normal"
windows as well (that’s actually what I’m most interested in), I
remember multihead support being pronounced the primary motivation
behind support for more than one display surface in SDL.

//David Olofson - Programmer, Composer, Open Source Advocate

.- Audiality -----------------------------------------------.
| Free/Open Source audio engine for games and multimedia. |
| MIDI, modular synthesis, real time effects, scripting,… |
`-----------------------------------> http://audiality.org -’
http://olofson.nethttp://www.reologica.se


SDL mailing list
SDL at libsdl.org
http://www.libsdl.org/mailman/listinfo/sdl


SDL mailing list
SDL at libsdl.org
http://www.libsdl.org/mailman/listinfo/sdl


SDL mailing list
SDL at libsdl.org
http://www.libsdl.org/mailman/listinfo/sdl


±-------------------------------------+

Bob Pendleton wrote, on or about 6/21/2005 10:13 AM:>On Tue, 2005-06-21 at 00:04 +0200, David Olofson wrote:

Well, what I’m wondering is where multihead support fits into this?
(Though I’ve moved from a dual head setup to a single, huge display
myself, but anyway…)

I don’t know. I haven’t even thought about it. I don’t have any way to
work on it. So, for now, I am going to ignore it.

I wouldn’t mind giving a hand on that. I’d just need source access.

  • Tim

Bob Pendleton wrote:> On Mon, 2005-06-20 at 17:28 -0600, Rainer Deyke wrote:

IMO the only correct approach to allow the program to create only one
output device per physical monitor attached to the computer.
Multi-window support should be seen as an emulation of multiple
monitors, just as single-window support is currently treated as a
emulation of running full-screen.

Ok, I’m not sure I understand what you mean. I think you just said that
you should only be allowed to have one window per monitor, even on
systems with a window manager. Is that correct?

How are you going to emulate a multi-monitor setup on a single-monitor
system then? No, SDL will need to support multiple windows on a single
monitor when running in windowed mode. As a backup. For running
multi-monitor programs on single-monitor computers.


Rainer Deyke - rainerd at eldwood.com - http://eldwood.com

Bob,

I agree with #3.
There is no logical reason to handle multiple window
on an env. where multiple window is not part of the
System API.

In?cio.

— Bob Pendleton escreveu:>

This message is about how to add multiple window
support to SDL. It is
not about how to do multiple windows using the
current version of SDL.

Last fall I spent a lot of time working on adding
multiple window
support to SDL. I got as far as having a version of
SDL that can create
multiple top level windows under X. (I work on Linux
so X was it.) I
stopped working on it at Christmas time and and have
been mostly not
working on it since.

The main reason for not working on it is that I
don’t like the solution
I have come up with for a problem I ran into when I
started looking at
adding multiple window support for devices that
don’t have a window
manager. SDL works just fine on any device that has
a dumb frame buffer.
It just takes over the screen and lets you blit to
it and do what you
want.

One of the reasons that SDL applications are so
portable, and why SDL is
so portable, is that it treats a window as just
another dumb frame
buffer. To SDL everything is just a collection of
pixels. (Sure, I’m
ignoring OpenGL right now, so don’t worry about it.)
The key is that SDL
only gives you one visible surface and it treats
every visible surface
as a frame buffer that might change size once in a
while. This feature
of SDL is a glorious thing.

So, when I started adding multiple windows to SDL I
just extended that
concept. I added APIs to let you create more than
one window and added a
window ID to events. This worked great. And, it
looks like it can be
extended to support sub-windows within top level
windows.

The problem comes when you start to add multiple
window support for
things like the frame buffer driver or the DGA
driver. A window on X or
MS Windows is embedded in a desktop. Each SDL window
is just another
window on the desktop. It may, or may not, have a
border and window
decorations. But, the key is that every top level
SDL window is actually
a sub-window of the desktop’s root window. The
trouble with implementing
multiple windows on the frame buffer or DGA driver
(and I expect the new
ipod driver) is that there is now root window. There
is only the frame
buffer and SDL takes over the whole thing.

So, in that situation what do you do when someone
asks to create a new
top level window after they have already created a
top level window
(which is the whole screen)? I’m stuck in a box here
and I need someone
to open a window for me so I can get out of the box.
:slight_smile:

I see several different ways to go in solving this
problem:

1)Treat the whole frame buffer as the top level
window and create SDL
windows that are embedded in it. That is, duplicate
many of the
functions of a window manager in side SDL. This
approach would allow SDL
applications to be portable across operating systems
and devices. I’m
not sure how much code would be needed because I’m
not sure how many new
functions would have to be added.

On the down side, this approach requires that the
new API include
functions for manipulating the root window
(functions that may not work
on windowing systems) or requires that we select a
fixed background for
the root window. It also requires that we provide an
SDL standard window
border and decorations for windows. I get really
nervous about our
ability to make a decision about the look and feel
of an SDL “window
manager”. But, I get even more nervous about the API
and code bloat
involved in making all this stuff customizable by
the application.
Perhaps we should only support borderless windows
and make the
applications draw the border and window decorations
allowing that part
of the problem to be pushed off onto a library
rather than forcing the
code to reside in SDL.

  1. Only allow a single top level window no matter
    what the underlying
    system but support sub-windows on all systems. This
    approach can be
    implemented on all devices and on devices with
    window managers it is
    almost as flexible as having multiple top level
    windows. But, again, we
    get into the problem of having to supply something
    like a window manager
    inside of SDL with all the potential problems that
    that entails.

  2. Treat the multiple window API the same way we
    currently treat OpenGL.
    If you aren’t on a system that supports OpenGL, you
    don’t get to use it.
    So, we could limit the multiple window API to only
    work on systems with
    a windowing system.

  3. I have also considered that on a frame buffer
    devices each top level
    window could be a full screen window so that only
    one window and its
    sub-windows visible at a time. This would be very
    much like option #2.

I would love to hear any suggestions, comments, or
alternate approaches.
I am not particularly happy with any of these
solutions. Solution #3 is
the easiest to implement. The other solutions all
have pretty much the
same level of difficulty.

  Bob Pendleton


±-------------------------------------+


SDL mailing list
SDL at libsdl.org
http://www.libsdl.org/mailman/listinfo/sdl


Converse com seus amigos em tempo real com o Yahoo! Messenger

For what it’s worth, I’m with Ryan on this one. You get multiple windows
on underlying systems that support multiple windows, and not framebuffer
devices. There are other API’s out there to let you create window systems
on framebuffers, and I think that’s beyond the scope of SDL.

Well, what I’m wondering is where multihead support fits into this?
(Though I’ve moved from a dual head setup to a single, huge display
myself, but anyway…)

I don’t know. I haven’t even thought about it. I don’t have any way to
work on it. So, for now, I am going to ignore it.

It seems like if we support multiple fullscreen windows, then we could
open one on each monitor, but since I’m not volunteering to work on this,
I’ll keep my mouth shut. :slight_smile:

I guess a good question is what are people expecting out of a multiple
window API? Are they expecting to just be able to create subwindows
which are basically framebuffers which clip out the parent? Or are they
expecting multiple fullscreen windows? Or are they expecting simply
multiple toplevel windows that they use the native window manager to
lower, raise, position, etc?

I’ll stick my neck out too, and wonder if people are expecting to be able
to mix and match OpenGL windows and 2D windows? :slight_smile:

See ya,
-Sam Lantinga, Software Engineer, Blizzard Entertainment

I guess a good question is what are people expecting out of a multiple
window API? Are they expecting to just be able to create subwindows
which are basically framebuffers which clip out the parent? Or are they
expecting multiple fullscreen windows? Or are they expecting simply
multiple toplevel windows that they use the native window manager to
lower, raise, position, etc?

The last option would be most useful in the applications for which I use SDL.

JeffOn Saturday 20 August 2005 12:30 pm, Sam Lantinga wrote:

I guess a good question is what are people expecting out of a multiple
window API? Are they expecting to just be able to create subwindows
which are basically framebuffers which clip out the parent? Or are they
expecting multiple fullscreen windows? Or are they expecting simply
multiple toplevel windows that they use the native window manager to
lower, raise, position, etc?

The last option would be most useful in the applications for which I use SDL.

Jeff

Seconded - in my next engine I want to have several dedicated debugging windows that will tell me all about my textures, sounds, fonts, memory usage etc. in real time, while the main app is running.
Basically, it would work like this: if application was started in windowed mode (!fullscreen) and F12 was pressed, aforemenioned windows are spawned. Press once again F12 and they’ll disappear.

So for me such functions would be needed:

  1. Create new window
  2. Destroy window (by id or caption)
  3. Pass pointer to function that would be dealing with such window (or sth similiar).
  4. Move window to (x, y)

Obviously, other people probably will need this + much more. Oh, and having the second one (“Or are they expecting multiple fullscreen windows?”) also would be cool.

Don’t know, maybe this mail will be usefull to someone - HTH :slight_smile:

Koshmaar> On Saturday 20 August 2005 12:30 pm, Sam Lantinga wrote:

I guess a good question is what are people expecting out of a multiple
window API? Are they expecting to just be able to create subwindows
which are basically framebuffers which clip out the parent? Or are >they
expecting multiple fullscreen windows? Or are they expecting simply
multiple toplevel windows that they use the native window manager to
lower, raise, position, etc?

I’ll stick my neck out too, and wonder if people are expecting to be >able
to mix and match OpenGL windows and 2D windows? :slight_smile:

See ya,
-Sam Lantinga, Software Engineer, Blizzard Entertainment

One more thing about multiple windows: http://oglwfw.sourceforge.net/

Quote:

"The OpenGL Window Framework is just what it says it is, a framework for
creating and controlling windows capible of holding an OpenGL rendering
context in it.

You might be wondering why we need yet another method of setting up an
OpenGL window and I dont blame you, between GLUT, SDL and GLFW you would
think all the bases had been covered however there were numerous
features of those various systems I didnt like, from the invasiveness of
the GLUT framework to the C-style system of SDL and GLFW and the overly
long and complex ways of setting up a context and no support for
multithreading that I could find. So I looked at the problem and decided
it was time for a C++ system to be born to take care of those gaps. "

Maybe people responsible for implementing multiple windows in SDL will
find sth useful in this lib.

Koshmaar