Android NDK:OpenGL在android_main之外的线程中绘制调用

时间:2011-09-14 19:43:15

标签: android multithreading opengl-es pthreads android-ndk

我有一个纯粹的原生Android NDK应用程序。主循环在

 android_main

由android_native_app_glue.h提供。

我需要在一个单独的线程中渲染一些东西,所以通过android_main我试过:

 pthread_t thread1;
 pthread_create(&thread1, NULL, renderstuff, NULL);

void *renderstuff( void *ptr )
{
  // some opnegl es draw calls
}

然而,这不会呈现任何东西。如果我从android_main中执行相同的绘制调用(但没有创建新的线程),它渲染得很好:S

3 个答案:

答案 0 :(得分:1)

出于兴趣,我看到了你的帖子,这是我的0.02美元(我在使用共享上下文在Android上运行的后台线程中有纹理):

必须从拥有要共享的上下文的线程调用

eglCreateContext。在致电eglCreateContext之后,您对eglMakeCurrent的调用(来自新生成的线程)应该有效。

答案 1 :(得分:0)

您是否在新线程中致电eglMakeCurrent()了?在对新线程进行任何绘制调用之前,您需要这样做。

答案 2 :(得分:-4)

我最终改造了一些东西以确保只有一个线程执行渲染。