コード例 #1
0
    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);
    }
コード例 #2
0
    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);
    }
コード例 #3
0
    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);
    }
コード例 #4
0
 private void draw() {
   MosaicRenderer.step();
 }