2012-07-01 10 views
5

Tengo un problema donde el objeto de procesador no parece obtener su llamado en absoluto. El depurador nunca llega a un punto de interrupción dentro de la función. Por lo tanto, mi cuadrado no está dibujando. Aquí está el código, que me haga saber si necesita cualquier otra cosa:onDrawFrame no se llama en Android

public class renderer implements GLSurfaceView.Renderer { 

Square square; 

public void onDrawFrame(GL10 unused) { 
    GLES20.glClear(GLES20.GL_COLOR_BUFFER_BIT); 
    square.Draw(); 
} 

public void onSurfaceChanged(GL10 gl, int width, int height) { 
    GLES20.glClear(GLES20.GL_COLOR_BUFFER_BIT); 
} 

public void onSurfaceCreated(GL10 unused, int width, int height) { 
    GLES20.glViewport(0, 0, width, height); 

} 

public void onSurfaceCreated(GL10 gl, EGLConfig config) { 
    square = new Square(5, 5); 

} 

La actividad principal es:

public class gameActivity extends Activity { 
/** Called when the activity is first created. */ 

private GLSurfaceView mGLView; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    requestWindowFeature(Window.FEATURE_NO_TITLE); 
    staticHolder.context = getApplicationContext(); 
    mGLView = new GLSurface(this); 
    setContentView(mGLView); 
} 
@Override 
protected void onPause() { 
    super.onPause(); 
    // The following call pauses the rendering thread. 
    // If your OpenGL application is memory intensive, 
    // you should consider de-allocating objects that 
    // consume significant memory here. 
    mGLView.onPause(); 
} 

@Override 
protected void onResume() { 
    mGLView.onResume(); 
} 


class GLSurface extends GLSurfaceView 
{ 
    renderer r = new renderer(); 
    public GLSurface(Context context) 

    { 
     super(context); 

     setEGLContextClientVersion(2); 
     setRenderer(r); 
     setRenderMode(GLSurfaceView.RENDERMODE_CONTINUOUSLY); 
    } 
} 

}

Actualmente la pantalla es sólo negro. ¿Hay alguna idea de por qué el OpenGL no se está procesando correctamente?

+0

¿Funcionan los otros puntos críticos en su programa? Si agrega 'glClearColor (1,0,1,1)' a la primera línea de onDrawFrame, ¿sigue siendo negro? ¿Alguna de las otras devoluciones de llamada del procesador? – Tim

+0

GLES20.glClearColor (1, 0, 1, 1) ;, no hace nada –

+0

¿Se llaman las otras devoluciones de llamada del procesador? onSurfaceCreated o onSurfaceChanged? – Tim

Respuesta

3

Ok, esto fue realmente estúpido pero no hubo ningún problema para empezar. El problema es que a Eclipse/Java no le importa la ambigüedad como C# y otros lenguajes (corrígeme si estoy equivocado). El problema fue que logré duplicar la misma clase en diferentes ubicaciones, con una actualizada y la otra no. El resultado final fue que estaba agarrando el primero que podría encontrar.

Lección aprendida, ¡busca la ambigüedad tú mismo porque el compilador/analizador no te lo dirá!