2011-08-12 24 views
8

Estoy tratando de agregar compatibilidad con OS X moderno a OpenTK framework. Mac OS Lion admite OpenGL 3.2 Core context. Puedo obtenerlo exitosamente usando CGL. Sin embargo, no puedo encontrar una forma directa de vincular el contexto a una ventana de carbono.Contexto de OpenGL 3.2 en una ventana de Carbon (OS Lion, Mono)

Implementación anterior de OpenTK utilizada aglSetDrawable método. CGL no tiene públicamente una alternativa, aunque tiene un undocumented CGLSetSurface similar. Cualquier intento de usarlo devuelve el código de error 1001, del cual no puedo encontrar una descripción.

¿Alguna ayuda para obtener GL 3.2 en una ventana de carbono?

+0

No he trabajado aún con lion, y tampoco con opengl 3.2 context. de todos modos, la forma más común de establecer el contexto en CGL es CGLSetCurrentContext. Tal vez eso funciona? – moka

+0

@moka. El contexto en sí está bien. La pregunta es acerca de adjuntarlo a una ventana sin usar Cocoa. – kvark

Respuesta

1

No puedo decir que he intentado esto, pero es posible que pueda hacer que funcione usando un HICocoaView que contenga un NSOpenGLView (que tomará un NSOpenGLContext que se puede crear desde un CGLContext).

AGL está en desuso y es poco probable que reciba más actualizaciones de Apple. CGL no está diseñado para contextos con ventana. A largo plazo, usar Cocoa es la mejor ruta en OS X.

+0

Gracias por la respuesta, @Stefan. Entiendo que Cocoa es la opción preferida ahora. Sin embargo, necesito acceder a estas funciones desde Mono, por lo que las señales de Objective-C son realmente difíciles de llevar. Ayudaría si alguien tuviera una biblioteca para manejar el contexto de NSOpenGLView con una interfaz simple de C ... – kvark

+0

Puede ajustar el código de Objective-C en clases de C++, eso es lo que hacen wxWidgets o Qt. Un HICocoaView ya tiene una interfaz simple C, por lo que solo necesitaría envolver un puñado de llamadas a NSOpenGLView. – Stefan

+0

¿Está desaprobado AGL en su conjunto? Noté que algunas partes están en desuso en 10.7, pero aparte de eso no hay nada ... – robinjam