Hi Raphael,

I strongly agree w/ Robert on declining to incorporate that Apple
extension into OSG.

The problem with this "feature" is, while it seems to "enhance" the
OpenGL API, it _totally_breaks_ the OpenGL ABI.  

There are many OpenGL shim libraries (such as gDEBugger, glIntercept,
BuGLe and Chromium, to name just a few) that depend on mimicking the
existing OpenGL dynamic library ABI.  That entire class of tools is
rendered unusable by the magic insertion of an additional parameter.  

For that reason, I believe this Apple extension should be actively
*avoided* by any GL developers having any thoughts of portability.
Except for vendor lock-in, IMHO Apple would be insane to "require" it of
applications in the future.

And I agree w/ Richard that this seems to be a "feature" of little
practical merit.  In quality OpenGL applications, MakeCurrent() just
isn't a bottleneck in the pipeline that needs fixing. 

Not to speak for Robert, I suggest simple test for considering any
OpenGL extension for OSG is: Would the ARB officially sanction the
extension?  I believe the chances in this case are 0.

cheers
-- mew




> -----Original Message-----
> From: [EMAIL PROTECTED] [mailto:osg-users-
> [EMAIL PROTECTED] On Behalf Of
> [EMAIL PROTECTED]
> Sent: Thursday, March 20, 2008 10:41 AM
> To: OpenSceneGraph Users
> Subject: Re: [osg-users] Mac OpenGL integration / CGLMacro.h
> 
> While Robert makes a good and valid point about corrupting the API
(and
> reality distortion fields in general), I don't think the original
> poster
> adequately explained this "feature" of OpenGL on Apple platforms.
> 
> All it amounts to is a #ifdef __APPLE__ and an extra include file in
> all the
> OSG headers (just like including gl.h) plus a single function call
> tucked
> away in the OpenGL initialization code. It doesn't change the OpenGL
> API as
> far as the source code or programmer is concerned. The original poster
> sort
> of made it sound like each OpenGL call now has an extra parameter
> passed
> in... which it does, but this is "hidden" by the macro header. No
> changes to
> OpenGL code required (unless you consider an extra header file an
undue
> burden and pollution of the API ;-). It does speed up each OpenGL call
> on
> the CPU side, and can help (God forbid) immediate mode code
> considerably.
> 
> It would be fairly simple to add to OSG, albiet tedious, and Robert
> (who
> obviously is not a Mac user ;-) would have to test it, or have someone
> close
> to him test it (hundreds of files would be affected).
> 
> Even though I am fully immersed in the Apple reality distortion field,
> I
> would have to express doubt however that it is worth the change. In
the
> age
> of batched geometry submission (as opposed to immediate mode), and the
> increasing reliance on shaders rather than the OpenGL state machine
the
> value of this feature over time get's increasingly smaller. I have
made
> this
> retro-fit many time to my own projects without any problems... what I
> have
> failed to see however is any significant performance benefit to well
> written
> OpenGL code in the first place.
> 
> Richard
> 
> 
> 
> Robert Osfield writes:
> 
> > On Thu, Mar 20, 2008 at 1:35 PM, Raphael Sebbe
> <[EMAIL PROTECTED]> wrote:
> >> thanks for answering. I understand your point regarding cross
> platform
> >> complexity. However, I am pretty convinced that passing the context
> to
> >> drawing functions makes sense these days, especially considering
the
> many
> >> contexts and threads running in parallel, and I don't get this as a
> vendor
> >> lock-in strategy, although this can be a side-effect of course.
> >
> > Ahhh the Steve Job reality distortion field...
> >
> > The vendor lock-in comes from getting developers to start off on
> Apple
> > then get them hooked on non portable API's, then come the day when
> you
> > want to port to another platform you whole architecture is tied up
> > around these non portable API's.   Porting to other platforms
becomes
> > a prohibitive task.
> >
> > Apple and Microsoft do it all the time.  Think how non standard all
> > MS's and Apple's API's are.  They even making porting back to
> previous
> > versions of their OS's hard.  MS's did 3D graphics with Direct3D
> > rather than the industry standard OpenGL purely for lock-in and hey
> > now Apple are tying to use OSX specific extensions to OpenGL that do
> > the same thing.  MS and Apple offer sweeteners, make it easy to
> > sudducced by their API's with slick and "plausable" marketing and
> > before you know you're hooked and tied in.
> >
> > The OSG is so portable because I and other resist such vendor lock-
> in,
> >  any platform specifics are kept well encapsulated enabling the end
> > users to easily move between platforms.  Portability is sweet for a
> > project like the OSG not only because it gives freedom to end users,
> > but also means that it's diverse development community can help
each.
> > Windows user writes and OpenGL extension that is portable, submits,
I
> > come it under Linux, then others under OSX, then Solaris, etc, the
> > same works the other way.  All users get to benefit from each other.
> >
> > Extensions like Apple's don't benefit anyone except Apple users tied
> > to the Apple platform.  Integrating it into the OSG or other
> > applications/API's harm *all* other platforms because it takes
> > developers resources away from things that benefit all platforms, it
> > adds complexity so adds maintenance burden which further weighs down
> > the whole product/project/community   To be successful as a software
> > engineer you have to be vigilant about these issues, if you aren't
> you
> > can get sucked in by the slick marketing and end up forgetting that
> > you're developing software for the benefit of all your users, not to
> a
> > particular vendor.
> >
> > Robert.

_______________________________________________
osg-users mailing list
[email protected]
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

Reply via email to