【发布时间】:2019-03-03 21:01:56
【问题描述】:
目前我正在尝试同时使用 textureView 和 OpenGL,我的目标是从 SurfaceTexture 读取缓冲区。经过大量搜索,我找到了grafika,但没有找到使用textureview的合适示例。(并且由于某种原因我必须使用textureView)
我尝试的是创建纹理并尝试设置纹理视图以使用它:
@Override
protected void onCreate(final Bundle savedInstanceState) {
super.onCreate(null);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
setContentView(R.layout.activity_textureview);
displayTextureView=(TextureView) findViewById(R.id.camera_textureview);
mEglCore = new EglCore(null, EglCore.FLAG_RECORDABLE);
mOffscreenSurface=new OffscreenSurface(mEglCore,VIDEO_WIDTH,VIDEO_HEIGHT);
mOffscreenSurface.makeCurrent();
mFullFrameBlit = new FullFrameRect(
new Texture2dProgram(Texture2dProgram.ProgramType.TEXTURE_EXT));
mTextureId = mFullFrameBlit.createTextureObject();
mCameraTexture = new SurfaceTexture(false);
mCameraTexture.attachToGLContext(mTextureId);
displayTextureView.setSurfaceTextureListener(mSurfaceTextureListener);
displayTextureView.setSurfaceTexture(mCameraTexture);
mHandler = new MainHandler(this);
Initialized=true;
}
但是它给了我错误:
GLConsumer 已附加到上下文
我也找到了this,但是在我尝试了这里描述的方法后,我从 glReadPixels 得到的结果是全黑的,所以我猜 SurfaceTexture 必须附加到 GLcontext 才能读取像素。
谁能帮帮我?
【问题讨论】:
标签: android opengl-es textureview