2012-05-22 9 views
6

Estoy buscando comenzar con algo de programación 3D en C o C++. El problema que tengo es que parece que los únicos tutoriales que puedo encontrar para Mac OS usan el objetivo C y los marcos de Cocoa. Quiero obtener el mismo entorno que los usuarios de Windows, más o menos.¿Cómo puedo 'separarme' de Cocoa y desarrollar aplicaciones Mac OpenGL en C/C++?

Si trato de usar un editor de texto y un compilador de g ++, me faltan encabezados, pero si trato de usar Xcode, me veo forzado a lidiar con Cocoa, lo que me resulta frustrante. Realmente no veo ninguna razón por la cual el OpenGL/GLUT que viene preinstalado en Mac debería obligarme a usar Xcode, pero parece que no puedo obtener los archivos de cabecera sin él.

¿Cómo puedo pasar por todas las interfaces de Apple "amigables con el desarrollador" para escribir un código anticuado con la portabilidad completa multiplataforma?

+2

No tiene que escribir solo aplicaciones basadas en Objective-C si desea usar Xcode. Por ejemplo, esto describe cómo hacer aplicaciones wxWidgets en Xcode: http://wiki.wxwidgets.org/Creating_Xcode_projects_for_wxWidgets_applications, que son aplicaciones multiplataforma basadas en C++. OpenGL como API es bastante portátil por sí mismo. –

+1

Solo está obligado a utilizar Cocoa si selecciona la aplicación Cocoa del asistente del nuevo proyecto. Seleccione C o C++ y no lo haga. OpenGL es demasiado caro para desarrollar una interfaz multiplataforma. –

Respuesta

5

Alguna porción de Objective-C es inevitable si desea utilizar los últimos beneficios del OSX/Cocoa. La forma más fácil de portar una aplicación existente a MacOS sería la siguiente:

  1. Escriba la aplicación nibless "bare bones" en Objective-C. Sólo sería una sola clase AppDelegate y un poco de configuración en la función main()
  2. Añadir la costumbre NSGLView descendiente en su ventana que se crea en el manejador de la AppDelegate didFinishLaunching caso
  3. Configuración del CVDisplayLink y devolución de llamada representación en el NSGLView inicialización
  4. Utilice su código de representación de OpenGL existentes en la devolución de llamada del CVDisplayLink

Ahora viene la parte interesante: dónde conseguir todo esto?

Sorprendentemente, una buena muestra de aplicación nibless es la interfaz de usuario para el puerto de QEMU de OSX (sí, el emulador). Además, la demostración oficial de Apple de GLEssenstialPractices muestra toda la información que necesita para configurar la canalización de renderizado de OpenGL. Todo lo demás depende de ti.

La introducción detallada y moderna a la programación OSX a nivel de sistema se puede encontrar en el libro "Programación avanzada de Mac OS X" de Mark Dalrymple. Explica muchas cosas y después de leer todo esto he entendido la mayoría de las decisiones de diseño en el sistema operativo (realmente te hace aceptar todas las cosas "no estándar" si piensas desde el punto de vista del rendimiento).

Para pasar por la programación "nibless", le recomendaría que lea las publicaciones del blog como esta http://blog.kleymeyer.com/2008/05/creating-cocoa-applications-programatically-ie-nib-less/ La búsqueda de Google ayuda mucho.

Los mismos trucos se aplican a la Cocoa Touch/IOS y hay un montón de preguntas contestadas en el SO, como éste Cocoa touch/Xcode - generating NIB-less graphics context

2

Si desea crear aplicaciones multiplataforma se puede crear un proyecto con la línea de comandos Plantilla de herramienta. A continuación, importe el marco OpenGL y GLUT. Esto le proporcionará un proyecto C++ "en blanco" con los encabezados necesarios de OpenGL y GLUT.

Lighthouse 3D le brinda algunos consejos sobre portabilidad y cómo iniciar su primer proyecto. http://www.lighthouse3d.com/tutorials/glut-tutorial/initialization/

-1

He creado una capa de software (llamada cocoglut) que permite la traducción de llamadas GLUT básicas o esenciales al CACAO.Esta biblioteca permite crear/destruir ventanas y registrar devoluciones de llamadas desde una aplicación C/C++, simplemente mediante el uso de llamadas GLUT, sin la necesidad de archivos semilla o archivos de proyectos XCode (y puede compilarse desde la línea de comandos). Esta opción usa una resolución de pantalla retina completa. La fuente está en GitHub.

+0

Muchas gracias por la edición, Nathaniel. – user5122888

Cuestiones relacionadas