Wrestling with CGL, AGL, NSGL and CG


…or how to put many acronyms in one line.

I’ve finally found some time to work on the native Equalizer OpenGL window system implementation on OS X. So far I have a fully working X11/glX implementation, since that is what is needed on Linux anyway. The native implementation based on CGL was just a stub. At first I tried to keep the low-level CGL interface, to avoid having two implementations for AGL (Carbon) and NSGL (Cocoa).

After poking around in various undocumented CG (Quartz) features (CGSSurface,  CGSConnection, CGSWindow) I’ve given up on the low-level CGL interface and converted the current code to AGL. Although various other projects have figured out how to use Quartz directly, my implementation crashed somewhere in CGLGetSurface. But since I wasn’t happy using undocumented API’s, the decision to ditch the low-level CGL approach was easy. It is just too bad that there is no official low-level windowing equivalent to CGL, or no way to bind a Carbon window to a CGLContextObj.

Since svn change 1165 Equalizer now uses AGL and is no longer limited to fullscreen-only, although event handling is still missing. Oh, and I’ll have to address NSGL at some point.

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s


%d bloggers like this: