我有一个纯粹的原生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
答案 0 :(得分:1)
出于兴趣,我看到了你的帖子,这是我的0.02美元(我在使用共享上下文在Android上运行的后台线程中有纹理):
必须从拥有要共享的上下文的线程调用 eglCreateContext
。在致电eglCreateContext
之后,您对eglMakeCurrent
的调用(来自新生成的线程)应该有效。
答案 1 :(得分:0)
您是否在新线程中致电eglMakeCurrent()
了?在对新线程进行任何绘制调用之前,您需要这样做。
答案 2 :(得分:-4)
我最终改造了一些东西以确保只有一个线程执行渲染。