I am developing a basic MacRuby OpenGL library and I am avoiding the deprecated 
fixed-function pipeline in favor of OpenGL 3.2+ core functionality.

The problem is Apple's OpenGL framework has two primary header files: gl.h and 
gl3.h. In Objective-C, I can just do: #import <OpenGL/gl3.h> to access OpenGL 
3.2 functions. In MacRuby, I seem to be limited to: framework 'OpenGL', which 
loads the older gl.h header.

To a large extent it doesn't matter since much of the 3.2 core functions 
already existed in OpenGL 2.1. However, there are some functions I need that 
only exist in 3.2:
glBindVertexArray
glGenVertexArrays
glDeleteVertexArrays

Versions of those functions do exist in OpenGL 2.1 (gl.h) with the APPLE suffix 
(e.g. glBindVertexArrayAPPLE), but they do not work when using a 3.2 core 
context.

I have worked around the issue with an Obj-C wrapper that imports gl3.h and 
wraps those specific functions, but it results in a warning: "gl.h and gl3.h 
are both included.  Compiler will not invoke errors if using removed OpenGL 
functionality."

At first glance, the clouds would part and the sun would shine if I could just 
load the gl3.h header from MacRuby instead of gl.h. However, I suspect that I 
would then be faced with a bridgesupport file that doesn't reflect gl3.h.

Having a bit of Obj-C code in my library isn't the end of the world, but I'd 
like to avoid the multiple-header warning, plus possible problems that might 
result from using OpenGL 2.1 functions with a 3.2 context (although I haven't 
seen any yet).

Any suggestions? Just port the whole kit to Obj-C and be done? Ugh.

On a related note, these constants are supposed to be defined in 
AppKit.framework bridgesupport, but aren't:
NSOpenGLPFAOpenGLProfile = 99
NSOpenGLProfileVersion3_2Core = 0x3200

Jim
_______________________________________________
MacRuby-devel mailing list
MacRuby-devel@lists.macosforge.org
http://lists.macosforge.org/mailman/listinfo/macruby-devel

Reply via email to