Я пишу API визуализации информации для Android и столкнулся с проблемой, пытаясь разместить две единицы пользовательского GLSurfaceView
в макет. Пользовательский GLSurfaceView
в данный момент является просто расширением GLSurfaceView
, чтобы устранить возможные ошибки, вызванные настраиваемыми методами.
Когда у меня есть оба компонента, добавленные в макет и запускающее приложение, оно выполняется. Но ничего не нарисовано, кажется, что он входит в бесконечный цикл. потому что отладочные сообщения внутри Renderers печатаются в LogCat. Тем не менее, он отлично работает, если я использую только один из компонентов GLSurfaceView
.
Я прочитал, что существует проблема с использованием GLSurfaceView
в нескольких действиях, и я полагаю, что это также применяется при одновременном использовании двух из этих компонентов. Я пробовал обходное решение, размещенное здесь, но, похоже, оно не работает.
Буду признателен за любую помощь. Я предпочитаю использовать openGL для лучшей производительности, но если я не могу использовать сразу несколько компонентов, я думаю, мне придется использовать Canvas вместо этого.
манифест выглядит следующим образом:
<?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>
В действии код выглядит так:
@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();
}
Я пропустил что-то очевидное? Или кто-нибудь может объяснить, почему он не работает?