是否可以在屏幕上同时显示多个渲染?就像将一个Android屏幕拆分为4个象限,并在每个象限上显示一个立方体?我认为它可能是OpenGL,但那是GLUT并且是基于Windows的。我正在研究如何为Android做这件事,但我还没有看到任何描述它的东西。这是我创建渲染的主要活动。
public class MainActivity extends Activity
{
private MyGLSurfaceView mGLView;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
// Create a GLSurfaceView instance and set it
// as the ContentView for this Activity
// "this" is the reference to activity
mGLView = new MyGLSurfaceView(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()
{
super.onResume();
// The following call resumes a paused rendering thread.
// If you de-allocated graphic objects for onPause()
// this is a good place to re-allocate them.
mGLView.onResume();
}
}
class MyGLSurfaceView extends GLSurfaceView
{
private final MyGLRenderer mRenderer;
Context context;
public MyGLSurfaceView(Context context)
{
super(context);
this.context = context;
// Create an OpenGL ES 2.0 context.
setEGLContextClientVersion(2);
// Set the Renderer for drawing on the GLSurfaceView
Log.d("Test", "GL initialized");
mRenderer = new MyGLRenderer(context);
setRenderer(mRenderer);
// Render the view only when there is a change in the drawing data
setRenderMode(GLSurfaceView.RENDERMODE_WHEN_DIRTY);
}
}
答案 0 :(得分:3)
我不明白为什么你不能用一个GLSurfaceView做到这一点。您可以通过调用glViewport将屏幕分成四个象限,将场景映射到该象限。然后,您可以调用绘图函数,然后对每个后续象限重复。
示例:
glViewport(0, 0, width/2, height/2);
< render first quadrant >
glViewport(width / 2, 0, width / 2, height / 2);
< render second quadrant >
等等......
答案 1 :(得分:1)
GLSurfaceView不是为此而设计的,但您可以使用TextureViews来实现。查看TextureView的在线文档。最简单的方法是创建一个单独的线程,依次呈现每个TextureView。如果你想要同时运行多个OpenGL ES上下文,那就复杂得多,但最近在Khronos.org OpenGL ES论坛上讨论过它。