2011-06-09 110 views
0

我有一个需求,我需要在同一个进程的两个线程渲染屏幕使用openGL ES ..我是android应用程序中的新手,并没有做太多的应用程序之前的发展。我知道一些关于openGL ES的知识,我需要紧急测试一些驱动程序代码。如何让两个线程同时渲染到使用openGL ES的屏幕

我有两个GLSurfaceView的Activity。我使用setcontentview和布局xml文件来定义布局。每个活动都有其布局文件分开。渲染显示的大小在屏幕的10%左右很小,我确定显示的位置在2个布局中不重叠。 最初,一项活动启动,并通过“创建”中的意向机制启动第二项活动。

1)我试了两次活动同时运行,但我没有成功。有些文档提到,当一个活动正在运行时,其他活动可能处于可见状态。我不确定是否有可能让这两项活动同时出现。

2)最初的实现是一个活动通过意图机制在“创建”中启动第二个活动。这导致2个活动正在运行,但不是同时运行。有没有一种方法可以使两个活动同时运行并显示。

3)后来为了创建第二个线程,我使用了“runnable”机制并创建了一个线程并通过“runnable”的“运行”调用了第二个活动。虽然我可以确认线程已被确认,但看不到第二个活动正在运行。

4)约束是由于我需要为2个渲染线程中的每一个都分开的eglCreateWindowSurface。

是否有任何示例/示例可以在显示屏幕时看到2个活动或2个线程如何同时运行?

我已经经历了许多教程和示例代码和讨论,以找到我的问题的一些提示。有人可以帮助一些链接或解释

+0

这听起来像你想要在同一个“页面”上的两个GLSurfaceViews。那是对的吗?你不能只用一个活动和布局来做到这一点吗? – 2011-06-09 10:21:39

回答

4

在任何版本的OpenGL中都不可能使用两个线程渲染相同的渲染目标。 OpenGL是一个状态驱动的系统,所以在一个线程中更改状态将覆盖另一个线程中的状态。只有一个OpenGL状态副本,因为只有一个GPU可以处理该状态。