現在、私は自分ApplicationActivity
のを持っています。このアクティビティは、複数のビューを管理する責任があります(GLSurfaceViews
)。すべてのビューでレンダラーを「グローバル」レンダラーに設定できますか?
コード:
public class ApplicationActivity extends Activity
{
private static final String TAG = ApplicationActivity.class.getSimpleName();
private final Stack<Screen> screens = new Stack<Screen>();
private GlRenderer glRenderer;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
Log.d(TAG, "Main Activity Created");
setupGraphics();
ChangeScreen(new MainMenu(this, glRenderer)); //Creating a new Screen sets the renderer
}
private void setupGraphics()
{
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
glRenderer = new GlRenderer(this);
}
public void Draw() //Is called by the glRenderer onDrawFrame() { mainActivity.Draw() }
{
}
}
同じアクティビティを切り替えGLSurfaceViews
て、私の知る限り、このメソッドsetRenderer
はビューレンダラーを設定してから、レンダリングスレッドを開始すると思います(新しいスレッドを作成します)が、ビューを切り替えるたびにスレッドを再作成したくありません-作成する可能性があります潜在的な問題。
したがって、最終的には、グラフィックをビジネスロジックなどから分離するためだけに、レンダラークラスが必要ですが、スレッドを再度設定しなくても、1つのレンダラーを使用できるかどうかはわかりません。