Каждый GLSurfaceView
построен с собственным EGLContext. Использование одного и того же контекста для нескольких GLSurfaceViews
, чтобы иметь доступ к тем же текстурам, похоже, не работает на всех графических процессорах (как показано на рисунке here).Android: Поделитесь текстурой между GLSurfaceViews в отдельных контекстах EGL
Мой вопрос заключается в том, есть ли способ разделить текстуру GL_TEXTURE_EXTERNAL_OES
на несколько GLSurfaceViews
с их раздельными контекстами. По умолчанию только поток, который создает GL_TEXTURE_EXTERNAL_OES
, сможет получить доступ к текстуре, но я ищу способ разрешить другим потокам в отдельных контекстах EGL читать эту текстуру, а затем отображать их отдельные GLSurfaceViews
.
Любое руководство будет оценено по достоинству. Спасибо.
Удивительный, спасибо Fadden! Сначала я пытался использовать «GLSurfaceViews», но код был действительно запутанным, поскольку для этого нет встроенной поддержки API. Я продолжу обычный подход SurfaceView. Кстати, знаете ли вы о каких-либо проектах с открытым исходным кодом, которые делают что-то подобное (т. Е. Создают EGLContext с orindary SurfaceView)? Кажется, что наиболее похожая Grafika предлагает https://github.com/google/grafika/blob/master/src/com/android/grafika/HardwareScalerActivity.java – Michael
У Grafika много действий, которые отображаются на SurfaceView с помощью GLES. Я бы рекомендовал просто снять весь пакет com.android.grafika.gles; если вы работаете с внешними текстурами, вам, вероятно, понадобятся и некоторые другие биты. Другие примеры - «текстура с камеры» и «запись приложения GL». – fadden