我設法寫了一個在TextureView上顯示3D模型的演示,模型可以根據手機的傳感器移動。 3D引擎是由C++編寫的,我需要做的是將TextureView的SurfaceTexture賦予3D引擎。 引擎調用函數ANativeWindow_fromSurface來檢索本機窗口並在其上繪製3D模型。 3D引擎不是我想在這個問題中討論的重點。將TextureView上顯示的記錄幀顯示爲mp4
現在我想記錄的移動3D模型的視頻。一種方法是像使用grafika一樣使用GL_TEXTURE_EXTERNAL_OES紋理,在每次調用updateTexImage()之後,使3D引擎對oes紋理繪製幀並繪製紋理內容,但對於某些限制,我不允許使用這種方式。
我打算直接使用TextureView的表面紋理。我認爲像attachToGLContext()和detachFromGLContext()這樣的函數對我的工作將會很有用。
任何人都可以給我一些建議嗎?
@fadden 能給我一些幫助嗎? – dragonfly
attach/detach調用會更改SurfaceTexture輸出可用的EGL上下文。對於屏幕和視頻編碼器,使用單個EGL上下文通常更容易(如「連續捕獲」)。 「記錄GL應用」代碼顯示了三種不同的渲染屏幕和視頻的方式;這些不起作用? – fadden
@fadden在「記錄GL應用程序」中,形狀是由您的java代碼生成的,您可以控制它們繪製到屏幕和編碼器。但在我的情況下,形狀是由3D引擎產生的,我不允許直接控制形狀。我只能在java層上做,並且框架已經寫入TextureView的surfacetexture中。 – dragonfly