Lo OK de este tutorial que se va explicando en detalle cómo uno puede configurar una aplicación de Xamarin C# que se ejecuta en WP 8.1, Windows 8.1 (tienda), Android y iOS * y algo muy importante hace uso de OpenGL ES 2.0 vista por renderizadores de C++. Esto es algo que recientemente necesitaba implementar un proyecto de mi y estoy seguro de que otros también podrían encontrar útil. De hecho, ya he ya encontré alguien en los foros de Xamarin que necesita esto.
La razón uno querría hacer esto es bastante obvia. Me refiero a un montón de código de OpenGL ES está escrito en C++ y todas las plataformas principales de la ayuda ahora a través de C++. Esto incluye la tienda de Windows y Windows Phone con los recientes avances en el proyecto de ángulo. En muchos casos el beneficio de rendimiento de C++ en C# sería muy beneficioso en este ámbito. OpenTK en todas las plataformas excepto Windows unos (que utilice el ángulo y aún no tienen soporte OpenTK) parece ser la principal forma de utilización de OpenGL desde C#, pero por desgracia como ya he mencionado, no está disponible en las plataformas de Windows de escritorio no. Además, como yo lo entiendo, OpenTK utiliza P/Invoke que está bien pero con cálculo de referencias implicado podría ver seria disminuir cuando se ejecuta a un procesador en C# contra C++ cuando se llama a un montón de OGL y mucho de cambio de los datos (y por lo tanto conversión) involucrados.
Ahora la pregunta obvia sería, ¿por qué no usar C++ en todo? La respuesta a esto, como muchos de ustedes leyendo esto probablemente ya saben es porque no es realmente tan recto hacia adelante. Una de las principales ventajas de utilizar C# frente a C++ proyectos multiplataforma es por supuesto Xamarin y Xamarin.Forms** que nos permite crear interfaces nativas en todas las plataformas soportadas sin realmente tener que hacer mucho trabajo específico de plataformas, especialmente cuando su solamente trabajo con controles estándar. Lamentablemente tendrás que escribir las implementaciones de los controles de vista GLES por separado para cada plataforma, pero una vez que tienes nos podemos reutilizar tanto como nos gusta. Volviendo a mi historia, la única manera que conozco de lograr algo como esto en C++ es a través de Qt y que realmente sólo está creando aplicaciones independiente de la plataforma que se labran ver como los sistemas operativos en el momento de desarrollo o simplemente un estilo con algunas ilustraciones genéricas que tipo de derecho en las diferentes plataformas en el momento de la creación. No es algo que usted quiere... Aparte de eso no sé de lo que también es compatible con Windows (tienda y teléfono). También, Qt no proporciona ningún tipo de nativo Windows estilo Phone-ish en el momento de escribir... Por último, utilizando C++ para desarrollo multiplataforma también no es realmente tan cómodo ni tan fácil de mantener como C# con Xamarin que proporciona una gran cantidad de código compartido. Además creo que la mayoría de ustedes estará de acuerdo que es simplemente más agradable utilizando C++ de bastantes maneras utilizando C#. Por lo tanto queremos simplemente C++ para hacer Render 3D y probablemente construcción de escena y manipulación pero no quieres cerca de otras partes de la aplicación con el fin de evitar algún grave frustración para la mayoría.
* Actualmente no puedo llevar a la práctica la parte de iOS debido a la falta de hardware de Mac, pero puedes ver la página de paso dedicada para más detalles sobre lo que usted todavía puede intentar hacer.
** Actualmente Xamarin.Forms no funciona para Android en VS 2015 comunidad RC y por lo tanto no pude aplicar Xamarin.Forms pero puedes ver la página de paso dedicada para más detalles sobre lo que usted todavía puede intentar hacer.