标签:android-ndk java c-4 android opengl-es-2-0
我需要在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
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。