Estoy tratando de crear una aplicación 3D simple para Android que tendrá una vista adicional en capas sobre la vista OpenGL (muy similar al ejemplo de SurfaceViewOverlay en las demostraciones de la API). Me encuentro con un problema al tratar de implementar ese método con una clase extendida GLSurfaceView. He creado un ejemplo en el que intento hacer una combinación de this demo con la demostración API Oerlay. Si trato de echar a VortexView objeto de un Martin como esto (reemplazar las líneas 44-46 en la demo API)Android OpenGL que extiende excepciones de puntero nulo GLSurfaceView
VortexView glSurfaceView=
(VortexView) findViewById(R.id.glsurfaceview);
consigo un error ClassCastException (lo cual es comprensible, como supongo fundición es bastante específico) así que Supongo que estoy buscando un método para transferir la vista de una instancia GLSurfaceView a una nueva subclase o una forma de establecer la superficie de representación en una vista definida XML para una subclase después de que se haya creado.
EDIT: He hecho algunos progresos tratando de conseguir que esto de obra en el ejemplo de la API XML utiliza la vista (de ApiDemos/res/layout/surface_view_overlay.xml)
<android.opengl.GLSurfaceView android:id="@+id/glsurfaceview"
android:layout_width="match_parent"
android:layout_height="match_parent" />
Si Cambio ese elemento a
com.domain.project.VortexView que hará el casting correctamente con el código anterior, pero genera excepciones de puntero nulo cuando golpea las rutinas surfaceCreated y surfaceChanged (creo que son los métodos llamados en la clase GLThread basado en el número de línea) dentro de la clase GLSurfaceView. Así que tal vez debería cambiar la pregunta: ¿Cómo puedo implementar una extensión para GLSurfaceView sin generar NullPointerExceptions en surfaceCreated y surfaceChanged, o cómo puedo depurarlos sin tener la fuente de GLSurfaceView.java?
Gracias, esto me ayudó. Debe marcar la pregunta como respondió – stealthcopter
Marcado, gracias. Me alegra ser de ayuda. –