Android:与OpenGL渲染器线程同步

Android:与OpenGL渲染器线程同步,第1张

概述我正在使用OpenGL ES在 Android应用程序中执行绘图. 我想编写一个从UI线程调用的函数,该函数将调用渲染器线程并让它读取并将图像返回给调用者. 我正在考虑使用Future,以便在渲染器线程写入图像数据时UI线程会休眠(该 *** 作非常快,因此用户不会觉得应用程序没有响应). 但我对如何将Future提交给渲染器线程感到茫然.我发现的所有示例都创建了自己的线程,然后将未来提交给这些线程.有关 我正在使用OpenGL ES在 Android应用程序中执行绘图.

我想编写一个从UI线程调用的函数,该函数将调用渲染器线程并让它读取并将图像返回给调用者.

我正在考虑使用Future,以便在渲染器线程写入图像数据时UI线程会休眠(该 *** 作非常快,因此用户不会觉得应用程序没有响应).

但我对如何将Future提交给渲染器线程感到茫然.我发现的所有示例都创建了自己的线程,然后将未来提交给这些线程.有关GLSurfaceView的文档提到“queueEvent()方法用于在UI线程和呈现线程之间进行安全通信.如果您愿意,可以使用其他一些Java跨线程通信技术,例如Renderer类本身的synchronized方法“.所以看起来像使用Future而不是调用queueEvent()是可能的,但我不知道如何做到这一点.

解决方法 这个,我没有测试它,所以可能不起作用:
FutureTask<YourReturnObject> futureTask = new FutureTask<YourReturnObject>(new Callable<YourReturnObject>() {    @OverrIDe    public YourReturnObject call() throws Exception {        //your gl stuff here        return // result    }});glSurfaceVIEw.queueEvent(futureTask);YourReturnObject result=futureTask.get(); // should block until gl thread is done.
总结

以上是内存溢出为你收集整理的Android:与OpenGL渲染器线程同步全部内容,希望文章能够帮你解决Android:与OpenGL渲染器线程同步所遇到的程序开发问题。

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

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

原文地址: https://outofmemory.cn/web/1131183.html

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

发表评论

登录后才能评论

评论列表(0条)

保存