编程语言
首页 > 编程语言> > java-OpenGLES在其他线程中预加载纹理

java-OpenGLES在其他线程中预加载纹理

作者:互联网

我需要在OpenGLES应用程序的非主线程中预加载一些纹理.我读到的是:Can’t call glGenTextures on multithreaded android app,但更多的是我需要的Java版本.如何告诉加载线程将纹理上传/创建到主循环中?我读了一些有关创建上下文的信息,并以某种方式与主要上下文共享.怎么样?

解决方法:

从资源/磁盘获取纹理到在GL中进行渲染有两个步骤,并且可以将它们分开以允许在工作线程上进行大多数加载和计算工作.

第一步是在Java级别实际创建Bitmap,它将使用BitmapFactory.decodeResouce()之类的东西.这部分可以在您喜欢的任何线程上完成,并且在完成加载后,将该位图扔到ArrayList或队列中.确保用同步块包围列表的访问.

第二步是调用glGenTextures,这必须在GL线程中完成.因此,在drawFrame()方法的开头,检查要保存位图的ArrayList的大小,如果大小大于0,请调用glGenTexures,然后从数组中删除并重新使用位图.

标签:android-ndk,java,c-4,android,opengl-es-2-0
来源: https://codeday.me/bug/20191208/2089834.html