C++ OpenGL ES espectador en C# (5 / 8 paso)

Paso 5: Añadir la capa de apoyo de la plataforma Android

OK así que ahora podemos pasar a Android. Empezar por crear un proyecto Android C# en blanco. También se necesita un proyecto de biblioteca dinámica de C++ Android. Recomiendo abstenerse de poner cualquier caracteres especiales como un '.' en el nombre de este proyecto porque puede confundir la toolchain VS Android. Entonces tenemos que hacer referencia a la biblioteca de C++ Android de la aplicación Android C# y también agregar una referencia al proyecto de procesador compartido C++ en el proyecto de biblioteca de C++ Android. También se recomienda que cambie la API del proyecto de C# a 19 para coincidir con el C++ que utiliza 19. También podría cambiar nivel de API de C++ project para el más reciente, pero usando un más viejo se le dará acceso a más usuarios si usted no necesita cualquier nuevas APIs.

Con el fin de conseguir el código compartido de trabajo necesitamos Dile el vinculador para vincular a las librerías GLESv2 y matemáticas. Para ello, añadir una página de propiedades para el proyecto de biblioteca de C++ Android y llamarla algo así como "Universal". Luego deberás ir a la página de entrada en el grupo de vinculador y anteponer "m; GLESv2;"en el campo de"Dependencias de la biblioteca".

Ahora debe ser capaz de obtener su Android aplicación de C# compila y ejecuta, aunque no muestra nada lujo todavía. A continuación deberemos crear algunas clases de C# en el proyecto Android. En primer lugar crear una clase denominada MyGLRenderer.

En su propio archivo debería verse así:

 [DllImport("libAndroidGLESBridge.so")] public static extern void on_surface_changed(int width, int height); 
 [DllImport("libAndroidGLESBridge.so")] public static extern void on_draw_frame(); 
 #region IRenderer implementation public void OnDrawFrame(Javax.Microedition.Khronos.Opengles.IGL10 gl) { on_draw_frame(); } 
 public void OnSurfaceChanged(Javax.Microedition.Khronos.Opengles.IGL10 gl, int width, int height) { on_surface_changed(width, height); } 
#region IRenderer implementación pública anular OnDrawFrame (gl Javax.Microedition.Khronos.Opengles.IGL10) {on_draw_frame(); public void OnSurfaceCreated(Javax.Microedition.Khronos.Opengles.IGL10 gl, Javax.Microedition.Khronos.Egl.EGLConfig config) { on_surface_created(); } #endregion } } 
público vacío OnSurfaceChanged (gl Javax.Microedition.Khronos.Opengles.IGL10, int ancho, int alto) {on_surface_changed (ancho, alto); using Android.Content;using Android.Views; using Android.Opengl; using Android.Util; 
público vacío OnSurfaceCreated (Javax.Microedition.Khronos.Opengles.IGL10 gl, Javax.Microedition.Khronos.Egl.EGLConfig config) {on_surface_created(); namespace CppGLESXamarin.Android { public class MyGLSurfaceView : GLSurfaceView { private MyGLRenderer mRenderer; #endregion public MyGLSurfaceView(Context context, IAttributeSet attrs) : base(context, attrs) { //Emulator fix SetEGLConfigChooser(8, 8, 8, 8, 16, 0); 

También se necesitan MyGLSurfaceView que debería ser:

 // Create an OpenGL ES 2.0 context. SetEGLContextClientVersion(2); 
 // Set the Renderer for drawing on the GLSurfaceView mRenderer = new MyGLRenderer(); SetRenderer(mRenderer); } } } 
 <?xml version="1.0" encoding="utf-8"?<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <Button android:id=" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text=" /> <CppGLESXamarin.Android.MyGLSurfaceView android:layout_width="fill_parent" android:layout_height="fill_parent" android:id=" /> </LinearLayout> 
Define el fotorrealismo para dibujar en el mRenderer GLSurfaceView = nuevo MyGLRenderer(); SetRenderer(mRenderer);}

Ahora estos dos podrían ser en archivos separados, un archivo o incluso en tu archivo principal dependiendo de cómo desea estructurar el código. Por favor, sólo tenga en cuenta que "libAndroidGLESBridge.so" debe ser el nombre del destino de su biblioteca. Debe establecer esta página de propiedades para el proyecto de C++ Android y poner el nombre apropiado en el campo de "Destino". Preferiblemente debe comenzar con "lib". A continuación necesitamos implementar estas funciones que están siendo importadas en C#.

Ir al proyecto Biblioteca Android C++. Eliminar la cabecera por defecto porque no la necesitamos. Reemplazar lo que está en el archivo de .cpp por defecto con lo siguiente:

Esto es solo un pequeño pedazo de código en C que nos permite llamar a los métodos necesarios de un objeto estático de SimpleRenderer. Lamentablemente no es posible tener acceso a objetos de C++ directamente a través de P/Invoke (DllImport). Usted necesitará un pedazo de código de C "agnóstico de objetos" como este para envolver la interfaz. Te recomiendo que crear estos tipos de contenedores en el código específico de Android y no el código compartido. Al igual que usted no debe poner el CX código para Windows en general comparte proyecto de C++. Esto es sólo para eliminar los innecesarios y confusión posible.

Antes de poder ver nada solo deberemos agregar nuestra nueva vista GLES a interfaz de usuario de la aplicación Android. Así que ir a "Main.axml" en "layout" bajo "Recursos" en el proyecto Android y añadir que lo siguiente a continuación el botón predeterminado en la vista de origen:

Si compila y ejecuta ahora debe ver un giro agradable cubo.

Artículos Relacionados

Principiantes guían de OpenGL: construir su propio software de CAD

Principiantes guían de OpenGL: construir su propio software de CAD

Mi carné de estudiante de Autodesk Maya expirado recientemente. Así que hice lo que cualquiera haría, construir mi propio 3D CAD software (cuidado con Autodesk).Así que empecé a escribir mi aplicación en C++ usando OpenGL, SDL y en aproximadamente un
D & D Espectador monstruo Fondue

D & D Espectador monstruo Fondue

Gran convite para su favorito Dungeon Master o LARP! Que sabía mini Beholders gusto como ' Smores!Beholders, también conocidos como "esferas de muchos ojos" o "ojo de los tiranos," son uno de los monstruos originales de Dungeons and Dr
Cupcakes de espectador

Cupcakes de espectador

estas magdalenas son el tratar de geek perfecta para tu sesión de Dungeons & Dragons, Magic el encuentro juego, o cualquier otra ocasión cuando un cupcake normal solo no.  Comen rápidamente antes de que su rayo Anti-masticar le afecta!Paso 1: fuentes
Gracias 1 500 los espectadores!

Gracias 1 500 los espectadores!

Paso 1: ¡ gracias! quiero decir gracias por mirar mis proyectos y realmente lo apreciamos! Por seguir viendo!
Peligro ratón Mini personaje espectadores de pie (con pegatinas)

Peligro ratón Mini personaje espectadores de pie (con pegatinas)

Mello, conseguí un libro de la etiqueta engomada de DangerMouse y así pongo las pegatinas de repuesto a utilizar haciendo estos mini transportines con pegamento caliente y cartón! ¡ Disfrute!Paso 1: fuentes dePistola de pegamento calientePegatinas o
Imprimir fotografía 3D

Imprimir fotografía 3D

impresiones de la impresora 3d en nuestra oficina (un Objet Connex500) con un material blanco semitransparente y rígido que puede utilizarse para crear estas impresiones fotográficas blanco y negro únicas.  Estas impresiones pueden ser indescifrables
Prisma reflector

Prisma reflector

Este sistema de pantalla utiliza una técnica que se refiere a menudo como fantasma de la pimienta. Fue inventado primero por Giambattista della Porta en 1584 y se ha utilizado comúnmente en el teatro. Algunos de sus usos famosos incluyen rendimiento
RECETA elegante y porción de SALSA VERDE

RECETA elegante y porción de SALSA VERDE

Hola queridos visitantes de mi página y los espectadores de mi canal de YouTube!Hoy, quiero presentarles a una ensalada muy popular entre las personas con origen Latino! Hoy en día se considera también una de las ensaladas más preferidas en los Estad
Lámpara de pie hecha de acrílico

Lámpara de pie hecha de acrílico

ProclamaciónSi tenga algún problema o atascarse en cualquier punto dentro del instructivo (especialmente en la imagen de sección de procesamiento o en cualquier parte) apenas sienta libre de enviarme un mensaje de Instructable o un correo electrónico
10 Hacks de la vida con el PVC #13

10 Hacks de la vida con el PVC #13

10 Hacks de la vida con el PVC #13[Ver VIDEO]Aquí le damos la 13ª edición a nuestra serie de "10 Hacks de la vida con el PVC". Construimos y probamos estos proyectos con éxito. Espero que usted puede beneficiarse de algunos de estos hacks de vid
10 Hacks de la vida con el PVC #11

10 Hacks de la vida con el PVC #11

10 Hacks de la vida con el PVC #11[VER VIDEO]Aquí es la 11ª Edición de nuestra serie "10 Hacks de la vida con el PVC". Construimos y probamos estos proyectos con éxito. Espero que usted puede beneficiarse de algunos de estos hacks de vida impres
PRIMAVERA / verano guirnalda de la flor del arco iris de artículos reciclados

PRIMAVERA / verano guirnalda de la flor del arco iris de artículos reciclados

Hola queridos visitantes de mi página y los espectadores de mi canal de YouTube! Hoy quiero mostrarte cómo ahorrar dinero y ciclo de algunos de los productos para el hogar que todo el mundo le gusta tirar y hacer nuestro planeta más sucio! Usted pued
Cohete de agua en $5

Cohete de agua en $5

esto es un cohete de agua fresca que he hecho de todos los materiales de desguace. Se trata de un cohete de agua de muy alta presión y cualquier persona puede construir dentro de $5.Also espectadores, esta es mi entrada para el hacer volar concurso e
Simplista no siempre es aburrido

Simplista no siempre es aburrido

Simple, sin embargo, toneladas de diversión y una configuración fácil para todas las edades!El razonamiento detrás de nuestro trabajo es que queríamos algo para mover con poca o ninguna ayuda del espectador, que se siguen para una buena cantidad de t