2012-07-01 23 views
5

Oluşturucu nesnesinin hiç çağrılmadığı görünmüyorsa bir sorun yaşıyorum. Hata ayıklayıcı, işlev içinde hiçbir zaman kesme noktasını vurmaz. Böylece benim karemim çizmiyor.onDrawFrame Android'de çağrılmadı

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); 

} 

ana faaliyettir:

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); 
    } 
} 

}

anda ekran sadece siyah İşte kodu başka bir şeye ihtiyacın olursa haber ver. OpenGL'nin neden düzgün bir şekilde oluşturulmadığı hakkında bir fikriniz var mı?

+0

Programınızdaki diğer kesme noktaları işe yarıyor mu? OnDrawFrame'in ilk satırına 'glClearColor (1,0,1,1)' eklerseniz, hala siyah mı? Diğer işleyici geri bildirimlerinden herhangi biri ateşlenir mi? – Tim

+0

GLES20.glClearColor (1, 0, 1, 1); hiçbir şey yapmıyor –

+0

Diğer renderer geri çağrıları aranıyor mu? onSurfaceCreated veya onSurfaceChanged? – Tim

cevap

3

Tamam, bu gerçekten aptaldı ama başlamak için hiçbir sorun yoktu. Sorun, Eclipse/Java'nın C# ve diğer diller gibi belirsizlikleri önemsememesidir (yanlış olsa da beni düzeltin). Sorun, aynı sınıfı farklı konumlarda çoğaltmayı başardım, biri güncellenmiş ve diğeri değil. Son sonuç, bulabileceği ilk şeyden biriydi.

Dersi öğrendiniz, kendiniz için belirsizliğe dikkat edin çünkü derleyici/ayrıştırıcı size söylemeyecektir!

İlgili konular