【问题标题】:How to have two threads simultaneously rendering to screen using openGL ES如何使用openGL ES让两个线程同时渲染到屏幕
【发布时间】:2011-06-09 09:54:59
【问题描述】:

我有一个要求,我需要使用 openGL ES 将同一进程的两个线程渲染到屏幕上。我是 android 应用程序的新手,以前没有做过很多应用程序开发。我对openGL ES有点了解,急需测试一些驱动代码。

我有两个 GLSurfaceView Activity。我使用 setcontentview 和布局 xml 文件来定义布局。每个活动都有其单独的布局文件。渲染显示的大小大约占屏幕的 10%,我确保显示的位置在 2 个布局中不重叠。 最初启动一个活动,然后通过“oncreate”中的意图机制启动第二个活动。

1) 我尝试同时运行两个活动,但我没有成功。一些文档提到,当一个活动正在运行时,另一个活动可能处于可见状态。我不确定是否可以同时显示这两个活动。

2) 最初的实现是一个活动通过“oncreate”中的意图机制启动第二个活动。这导致 2 个活动在运行,但不是同时运行。有没有办法让两个活动同时运行并显示。

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

4) 约束是由于我需要为 2 个渲染线程中的每一个线程设置单独的 eglCreateWindowSurface。

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

我浏览了许多教程、示例代码和讨论,以找到解决我问题的一些线索。有人可以帮助提供一些链接或解释

【问题讨论】:

  • 听起来你想在同一个“页面”上有两个 GLSurfaceViews。那是对的吗?你不能只用一个 Activity 和布局来做到这一点吗?

标签: android multithreading opengl-es android-activity


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-29
    • 2011-09-11
    相关资源
    最近更新 更多