Невозможно перетянуть внешнюю текстуру в EGLSurface в Android

Когда я попытался визуализировать текстуру и матрицу преобразования в EGLSurface, в представлении не отображается изображение.

Как продолжение этой проблемы, я немного изменил код, следуя непрерывному захвату примера кода grafika / fadden

Вот мой код:

Вот метод рисования, который работает на RenderThread.

Этот метод отрисовки вызывается должным образом, когда данные создаются на стороне производителя из Native Code.

 public void drawFrame() {

        mOffScreenSurface.makeCurrent();
        mCameraTexture.updateTexImage();
        mCameraTexture.getTransformMatrix(mTmpMatrix);

        mSurfaceWindowUser.makeCurrent();
        mFullFrameBlit.drawFrame(mTextureId, mTmpMatrix);
        mSurfaceWindowUser.swapBuffers();


    }

run method of RenderThread ->

     public void run() {
            Looper.prepare();

            mHandler = new RenderHandler(this);

            mEglCore = new EglCore(null, EglCore.FLAG_RECORDABLE);

            mOffScreenSurface = new OffscreenSurface(mEglCore, 640, 480);

            mOffScreenSurface.makeCurrent();

            mFullFrameBlit = new FullFrameRect(
                    new Texture2dProgram(Texture2dProgram.ProgramType.TEXTURE_EXT));
            mTextureId = mFullFrameBlit.createTextureObject();

            mCameraTexture = new SurfaceTexture(mTextureId);
            mCameraSurface = new Surface (mCameraTexture);   // This surface i am sending to Native Code where i use ANativeWindow reference and copy the data using post method. {producer}

            mCameraTexture.setOnFrameAvailableListener(new SurfaceTexture.OnFrameAvailableListener() {
                @Override
                public void onFrameAvailable(SurfaceTexture surfaceTexture) {
                    Log.d (TAG, "Long breath.. data is pumbed by Native Layer producer..");
                    mHandler.frameReceivedFromProducer();
                }
            });

            mSurfaceWindowUser = new WindowSurface(mEglCore, mSurfaceUser, false);   // this mSurfaceUser is a surface received from MainActivity TextureView.
    }

Чтобы подтвердить, производят ли данные на собственной стороне, производящей данные, если я передаю непосредственно поверхность пользователя Без каких-либо конфигураций EGL, кадры выводятся на экран.

На родном уровне

geometryResult = ANativeWindow_setBuffersGeometry(userNaiveWindow,640, 480, WINDOW_FORMAT_RGBA_8888);

Чтобы сделать кадр, который я использую

  ANativeWindow_lock  and ANativeWindow_unlockAndPost() to render directly frame into buffer. 

Я не мог думать, что может быть не так и куда мне еще копать?

Спасибо, Фадден, за вашу помощь.

0 ответов

Другие вопросы по тегам