[gephex-devel] opengl and gephex

Philipp Promesberger [c] coma at gephex.org
Mon Jun 13 17:34:28 CEST 2005


Martin Bayer wrote:

>Why do we need a single gl_core interface?
>
>+ portability by hiding the glx, wgl, agl subsystem
>+ state cache optimization
>+ resource management
>  
>
Don't forget that this also enables a central extension management (the 
core can query all extensions and try to offer fallback solution if 
certain extensions are not supported by the graphics card and such a 
fallback solution exists - all being hidden from the actual core user). 
This is just convenience though but for the actual work with such a core 
it could simplify things a lot for the plugin coder (doesn't have to 
query extensions, the library can offer a clean handling of fallbacks 
and/or assemble a minimum subset of extensions that have to be 
supported). This is another +.

>- existing gl code must be changed to redirect gl* calls
>  
>
This - weighs the least IMHO (the least +weighing is state cache 
optimization probably). The core interface should closely match the gl.h 
one thus making it easy to do a simple query/replace on most of the 
code. Also: Not all gl functions are being wrapped - only those that 
"leave a state changed" on the card (in the broadest sense :) ).

>- lots of delegation code needs to be written
>  
>
I say this is not too big of a deal also - the code is straight forward 
and easy to write.

>[...]
>I favour (3) for gephex 0.4 and (4) for gephex 0.5. The call syntax in
>the unit code is the same and the gl_core stuff can be reused without
>changes.
>  
>
I agree. (3) seems to be the most easy solution to implement in 0.4 and 
(4) the cleanest overall solution.

There's one final problem with (3) though...initialization of the core 
requires a window handle (at least on windows) so it's dependent to an 
output window to some extent. The easiest solution i can think of for 
this is to just make the frboutmodule link to that library too....meaning:
- if there's no output, the first module to use the core will call 
initialize (ctor). This initializing function will create a (hidden) 
window to work with. The frboutmodule will just take the window handle 
from there once initialized the first time.
- if there's an output, it will call initialize itself thus creating a 
renderwindow and setting up the core with this.

I'm not familiar with the linux/mac side...are there any similar 
requirements?

regards,
-coma


--
------------------------ [ SECURITY NOTICE ] ------------------------
To: gephex-devel at lists.gephex.org.
For your security, coma at gephex.org
digitally signed this message on 13 June 2005 at 15:30:29 UTC.
Verify this digital signature at http://www.ciphire.com/verify.
------------------- [ CIPHIRE DIGITAL SIGNATURE ] -------------------
Q2lwaGlyZSBTaWcuAVdnZXBoZXgtZGV2ZWxAbGlzdHMuZ2VwaGV4Lm9yZwBjb21hQGdlc
GhleC5vcmcAZW1haWwgYm9keQB4BwAAfAB8AAAAAQAAAJWmrUJ4BwAAJgMAAgACAAIAIB
+oZ0QQT9njneW0BJbMBFNhWVl5dPLKbVD4NhL1uvURAQCAY+pi9xDkKQY80xF9IH5q1/2
gCQ+37YHuT7nVIQT0MY7VCtB7Y/zngzuzKgyZmTbj/5HlCnzX0GHXxZWUfFgxWo3DU2ln
RW5k
--------------------- [ END DIGITAL SIGNATURE ] ---------------------



More information about the gephex-devel mailing list