private void doShowPreviewFrame() { mInputSurfaceTexture.updateTexImage(); mInputSurfaceTexture.getTransformMatrix(mTransformMatrix); MosaicRenderer.setWarping(false); // Call preprocess to render it to low-res and high-res RGB textures. MosaicRenderer.preprocess(mTransformMatrix); MosaicRenderer.updateMatrix(); draw(); mEgl.eglSwapBuffers(mEglDisplay, mEglSurface); }
private void doAlignFrame() { mInputSurfaceTexture.updateTexImage(); mInputSurfaceTexture.getTransformMatrix(mTransformMatrix); MosaicRenderer.setWarping(true); // Call preprocess to render it to low-res and high-res RGB textures. MosaicRenderer.preprocess(mTransformMatrix); // Now, transfer the textures from GPU to CPU memory for processing MosaicRenderer.transferGPUtoCPU(); MosaicRenderer.updateMatrix(); draw(); mEgl.eglSwapBuffers(mEglDisplay, mEglSurface); }
private void doInitGL() { // These are copied from GLSurfaceView mEgl = (EGL10) EGLContext.getEGL(); mEglDisplay = mEgl.eglGetDisplay(EGL10.EGL_DEFAULT_DISPLAY); if (mEglDisplay == EGL10.EGL_NO_DISPLAY) { throw new RuntimeException("eglGetDisplay failed"); } int[] version = new int[2]; if (!mEgl.eglInitialize(mEglDisplay, version)) { throw new RuntimeException("eglInitialize failed"); } else { Log.v(TAG, "EGL version: " + version[0] + '.' + version[1]); } int[] attribList = {EGL_CONTEXT_CLIENT_VERSION, 2, EGL10.EGL_NONE}; mEglConfig = chooseConfig(mEgl, mEglDisplay); mEglContext = mEgl.eglCreateContext(mEglDisplay, mEglConfig, EGL10.EGL_NO_CONTEXT, attribList); if (mEglContext == null || mEglContext == EGL10.EGL_NO_CONTEXT) { throw new RuntimeException("failed to createContext"); } mEglSurface = mEgl.eglCreateWindowSurface(mEglDisplay, mEglConfig, mMosaicOutputSurfaceTexture, null); if (mEglSurface == null || mEglSurface == EGL10.EGL_NO_SURFACE) { throw new RuntimeException("failed to createWindowSurface"); } if (!mEgl.eglMakeCurrent(mEglDisplay, mEglSurface, mEglSurface, mEglContext)) { throw new RuntimeException("failed to eglMakeCurrent"); } mGl = (GL10) mEglContext.getGL(); mInputSurfaceTexture = new SurfaceTexture(MosaicRenderer.init()); MosaicRenderer.reset(mWidth, mHeight, mIsLandscape); }
private void draw() { MosaicRenderer.step(); }