I would hide any refence to OpenGL and use a dummy `bitmap':
AGL already provides you with this ability (well, to the limited extent
of the vtable entries we implemented).
-----Original Message-----
From: alleg-developers-bounces@xxxxxxxxxx [mailto:alleg-
developers-bounces@xxxxxxxxxx] On Behalf Of Evert Glebbeek
Sent: Tuesday, July 25, 2006 7:03 AM
To: Coordination of admins/developers of the game programming library
Allegro
Subject: Re: [AD] OpenGL
On Tuesday 25 July 2006 13:44, Elias Pschernig wrote:
Does it seam feasible to somehow merge in all of AllegroGL, just so
we
have working OpenGL again in 4.3, and then worry about refining this
to
a new graphics driver structure later?
Or is it maybe better to start a clean OpenGL driver from scratch?
The former probably would be rather messy, but once it compiles,
would
mean we get all the features already in AllegroGL. The latter means,
we'd initially start with only a minimal implementation, and then
would
need to add the required features again step by step (probably
peeking
at the AllegroGL code).
What I would prefer in terms of the graphics drivers is to change the
existing
vtables now and adapt the code to use the new drivers.
The real problem I had with that (which I brought up before and was
discussed,
without reaching some final consensus) is that right now, changing the
graphics drivers will break all other drivers on all other platforms.
Now
maybe we should just Not Care and allow things to break and then fix
them
later.
What I expect in the end is, that I simply can do:
display = al_create_display(640, 480, AL_AUTODETECT, AL_OPENGL);
glClearColor(0, 0, 1, 1);
glClear();
al_flip_display(display);
I would hide any refence to OpenGL and use a dummy `bitmap':
display = al_create_display(..., AL_ACCELERATED, ...);
bmp = al_get_buffer(display);
al_clear_bitmap(bmp, 0,0,1,1); // or whatever colour format
al_flip_display(display);
that way, code can be written with complete ignorance of the
underlying
driver
and work properly. Sure, one can still use the normal OpenGL commands
(and
we
must make sure that this does work), but the second example should
work
too.
In case of OpenGL, the returned bitmap from al_get_buffer could just
have
a
flag set to say `use OpenGL commands instead of drawing to me', or
better
yet, the drawing operations in the vtable could be directly mapped to
OpenGL
commands:
al_clear_bitmap(bmp, ...) gets translated to
bmp->vtable->clear(bmp, ...);
which is a reference to
al_opengl_clear_bmp(BITMAP *dummy, ...)
{
glClearColor(...);
glClear();
}
Each graphics driver would have a capability flag telling if it can
provide an OpenGL context or not. And graphics drivers would see in
their initialization function if OpenGL is requested, and initialize
an
OpenGL context if so.
I think a generic AL_ACCELERATED flag would be better. Internally it
would
work as you describe anyway.
Evert
------------------------------------------------------------------------
-
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to
share
your
opinions on IT & business topics through brief surveys -- and earn
cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDE
V
--
https://lists.sourceforge.net/lists/listinfo/alleg-developers
-----------------------------------------------------------------------------------
This email message is for the sole use of the intended recipient(s) and may contain
confidential information. Any unauthorized review, use, disclosure or distribution
is prohibited. If you are not the intended recipient, please contact the sender by
reply email and destroy all copies of the original message.
-----------------------------------------------------------------------------------
-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys -- and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV