Wie kann ich Mehrere GLSurfaceView Komponenten im gleichen Layout?

Schreibe ich eine Information Visualization API für Android und lief in ein problem, statt zu versuchen, zwei Einheiten einer benutzerdefinierten GLSurfaceView in ein Layout. Die Benutzerdefinierte GLSurfaceView an dieser Stelle ist lediglich eine Erweiterung des GLSurfaceView beseitigen Sie mögliche Störungen, die von benutzerdefinierten Methoden.

Wenn ich beide Komponenten Hinzugefügt, layout und starten Sie die Anwendung, es läuft. Aber nichts gezeichnet, wie es scheint in eine unendliche Schleife. weil die debug-Meldungen in die Renderer sind gedruckt in der LogCat. Aber Es funktioniert völlig in Ordnung, wenn ich nur eine der benutzerdefinierten GLSurfaceView Komponenten.

Ich gelesen, dass es ein problem mit GLSurfaceView in mehrere Aktivitäten und ich nehme an, das gilt auch bei Verwendung zwei dieser Komponenten bei der gleichen Zeit. Ich habe den workaround gepostet hier aber kann nicht scheinen, um es zu arbeiten entweder.

Ich würde jede Hilfe zu schätzen wissen. Ich wähle zu verwenden openGL für die bessere Leistung, aber wenn ich nicht verwenden können mehrere Komponenten auf einmal ich denke, ich werde Leinwand statt.

Manifest sieht wie folgt aus:

<?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">
    <TextView android:text="@string/hello" android:id="@+id/TextView01"
        android:layout_width="wrap_content"
            android:layout_height="wrap_content" />

    <com.syntronic.vtadlib.VisualizationView android:id="@+id/glview"
        android:layout_width="fill_parent" android:layout_height="300px" />


    <TextView android:text="@string/hello" android:id="@+id/TextView02"
        android:layout_width="wrap_content"
            android:layout_height="wrap_content" />

    <LinearLayout 
        android:orientation="vertical" android:layout_width="fill_parent"
        android:layout_height="fill_parent">

        <com.syntronic.vtadlib.VisualizationView android:id="@+id/glview2"
            android:layout_width="fill_parent" android:layout_height="fill_parent" />

    </LinearLayout>

</LinearLayout>

Aus der Aktivität der code ist wie folgt:

@Override
public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.main);

    mSurfaceView = (VisualizationView) findViewById(R.id.glview);
    mSurfaceView2 = (VisualizationView) findViewById(R.id.glview2);

    //Enables debug flags for Errors
    //mSurfaceView.setDebugFlags(GLSurfaceView.DEBUG_CHECK_GL_ERROR);   
    //mSurfaceView2.setDebugFlags(GLSurfaceView.DEBUG_CHECK_GL_ERROR);  

    mSurfaceView.setRenderer(new CoordinateSystemRenderer());
    mSurfaceView2.setRenderer(new CoordinateSystemRenderer());

}

@Override
protected void onPause() {
    //TODO Auto-generated method stub
    super.onPause();
    mSurfaceView.onPause();
    mSurfaceView2.onPause();
}

@Override
protected void onResume() {
    //TODO Auto-generated method stub
    super.onResume();
    mSurfaceView.onResume();
    mSurfaceView2.onResume();
}

Übersehe ich hier etwas offensichtliches? Oder kann jemand erklären, warum es nicht funktioniert?

  • Die erste Sache, springt bei mir ist, dass Ihr geschachtelten LinearLayout eingestellt ist fill_parent. Ich würde überprüfen, um sicherzustellen, dass beide Ihre GLSurfaceViews sind, legte sich mit nicht-null-Höhe. Kann es sein, dass Sie sind sowohl in der Zeichnung, aber das eine hat eine Höhe von 0 Pixel und ist somit unsichtbar.
  • Anstelle von zwei GLSurfaceViews, vielleicht besser zu erstellen/verwalten, ein GL-Gewinde und dem Kontext selbst anwenden, die zu zwei SurfaceViews (NICHT GLSurfaceViews). Siehe fadden Diskussion und link zu Grafika.
InformationsquelleAutor Rufio | 2011-02-14
Schreibe einen Kommentar