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

java-OpenGLES在其他线程中预加载纹理,第1张

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

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

解决方法:

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

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

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

总结

以上是内存溢出为你收集整理的java-OpenGLES在其他线程中预加载纹理全部内容,希望文章能够帮你解决java-OpenGLES在其他线程中预加载纹理所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1070744.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存