はデフォルトでGLContext
に手動で作成すると添付されますか?もしそうなら、どうですか?ここでGLConsumerは新しいサーフェステクスチャのコンテキストに既に添付されています
は一例であり、私は自分のSurfaceTexture
を作成し、TextureView
に設定しようとしている:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView textView = (TextView) findViewById(R.id.version);
TextureView textureView = (TextureView) findViewById(R.id.texture);
int[] arr = new int[1];
GLES20.glGenTextures(1, arr, 0);
int texName = arr[1];
SurfaceTexture surfaceTexture = new SurfaceTexture(texName);
textureView.setSurfaceTexture(surfaceTexture);
}
}
私は常に取得しています:
E/GLConsumer:[unnamed- 29058-0] attachToContext:GLConsumerは既に がコンテキストに添付されています
例外:
E/AndroidRuntime:致命的な例外:メイン プロセス:com.example.dkarmazin.openglesversion、PID:29058 java.lang.RuntimeException:attachToGLContext中のエラー(詳細はlogcat 参照) アンドロイドで 。 android.view.HardwareRenderer $ Gl20Renderer.setSurfaceTexture(HardwareRenderer.java:2でgraphics.SurfaceTexture.attachToGLContext(SurfaceTexture.java:215) でandroid.view.GLES20TextureLayer.setSurfaceTexture(GLES20TextureLayer.java:86) 228) android.view.TextureView.getHardwareLayer(TextureView.java:401) (android.view.View.java:13443) android.view.View.getDisplayList(View.java:13519) android.view.ViewGroup.dispatchDrawでandroid.view.ViewGroup.drawChild(ViewGroup.java:3115) でandroid.view.View.draw(View.java:14297) (ViewGroup.java:2952) ででandroid.view.View.getDisplayList(View.java:13472) android.view.View.getDisplayList(View.java:13519) android.view.View.draw(View.java:14297)android.view.View.View.drawChild(ViewGroup.java:3115)のとandroid.view.View.ViewGroup.dispatchDraw(ViewGroup.java:2952)の android.view.View.draw(View.java:14583) at android.widget.FrameLayout.draw(FrameLayout.java:472) android.view.View.getDisplayList(View.java:13477) (android.view.View.getDisplayList(View.java:13519)) (android)にあります。 view.View.draw(View.java:14297) android.view.ViewGroup.drawChild(ViewGroup.java:3115) android.view.ViewGroup.dispatchDraw(ViewGroup.java:2952) android.view.View.View.draw(View.java:14583) at android.support.v7.widget.ActionBarOverlayLayout.draw(ActionBarOverlayLayout.java:444) at android.view.ViewDisplayList(View.java: android.view.View.getDisplayList(View.java:13519)android.view.View.draw(View.java:14297)android.view.ViewGroup.drawChildで でで13477) (ViewGroup.java:3115) android.viewの ViewGroup.dispatchDraw(ViewGroup.java:2952)android.view.View.getDisplayList(View.java:13472)の とandroid.view.View.View.View.java:13519の android.view.Viewの です。ドロー(View.java:14297) android.view.ViewGroup.drawChild(ViewGroup.java:3115) android.view.ViewGroup.dispatchDraw(ViewGroup.java:2952) at android.view.ViewDisplayList View.java:13472)android.view.ViewGroup.drawChildでandroid.view.View.draw(View.java:14297) でandroid.view.View.getDisplayList(View.java:13519) で(のViewGroup。 java:3115) android.view.ViewGroup.dispatchDraw(ViewGroup.java:2952) at android.view.View.draw(View.java:14583) at android.widget.FrameLayout.draw(FrameLayout.java: 472) at com.android.internal.policy.impl.PhoneWindow $ DecorView.draw(PhoneWindow.java:2326) at android.view.View.getDisplayList(View.java:13477) android.view.View .getDisplayList(View.java:13519) at android.view.HardwareRenderer $ GlRenderer.buildDisplayList(HardwareRenderer.java:1577) at android.v android.view.ViewRootImpl.performDrawでandroid.view.ViewRootImpl.draw(ViewRootImpl.java:2530) でiew.HardwareRenderer $ GlRenderer.draw(HardwareRenderer.java:1449) (ViewRootImpl.java:2402)アンドロイドで 。 で android.view.ViewRootImpl $ TraversalRunnable.run(ViewRootImpl.java:5948) でview.ViewRootImpl.performTraversals(ViewRootImpl.java:2019)android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1079) で android.view.Choreographer $ callbackRecord.run(Choreographer.java:761) android.view.Choreographer.doCallbacks(Choreographer.java:574) android.view.Choreographer.doFrame(Choreographer.java:544) at android.view.Choreographer $ FrameDisplayEventReceiver.run(Choreographer.java:747) at android.os.Handler.handleCallback(Handler.java:733) android.app.ActivityThread.main(ActivityThread.java:5102)でandroid.os.Handler.dispatchMessage android.os.Looper.loopで(Handler.java:95) (Looper.java:136) で) (ネイティブメソッド) at java.lang.reflect.Method.invoke(Method.java:515) at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:785) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601) at dalvik.system.NativeStart.main (ネイティブメソッド)は、新しく作成された
SurfaceTexture
オブジェクト上detachFromGLContext
を呼び出す
は、問題を解決するが、それは私がattachToGLContext
は、このシナリオで呼び出されないことを確認することができますよう、むしろ混乱を招くのです。
P.S.私は、TextureView
にはそれが自分自身のSurfaceTexture
であることを知っています。このシナリオでは、SurfaceTexture
から拡張する独自の実装を使用する必要があります。