详解Unity安卓共享纹理

本文主要介绍了Unity安卓共享纹理,对此感兴趣的同学,可以参考下,亲自实验一下,理解其原理。

还有其他粒子效果也可以加入,比如Unity音量可视化——粒子随声浪跳动

纹理取回

在安卓端取回纹理也是可行的,我没有写太多,这里做了一个示例,在 updateTexture() 加入这几行


// 创建读出的GL_TEXTURE_2D纹理
if (mUnityTextureCopy == null) {
    Log.d(TAG, "width = " + width + ", height = " + height);
    mUnityTextureCopy = new GLTexture2D(UnityPlayer.currentActivity, size.x, size.y);
    mFBOCopy = new FBO(mUnityTextureCopy);
}
GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, mUnityTextureCopy.mTextureID);
GLES20.glCopyTexSubImage2D(GLES20.GL_TEXTURE_2D, 0,0,0,0,0,size.x, size.y);
mFBOCopy.FBOBegin();
// //test是否是当前FBO
// GLES20.glClearColor(1,0,0,1);
// GLES20.glClear(GLES20.GL_COLOR_BUFFER_BIT);
// GLES20.glFinish();
int mImageWidth = size.x;
int mImageHeight = size.y;
Bitmap dest = Bitmap.createBitmap(mImageWidth, mImageHeight, Bitmap.Config.ARGB_8888);
final ByteBuffer buffer = ByteBuffer.allocateDirect(mImageWidth * mImageHeight * 4);
GLES20.glReadPixels(0, 0, mImageWidth, mImageHeight, GLES20.GL_RGBA, GLES20.GL_UNSIGNED_BYTE, buffer);
dest.copyPixelsFromBuffer(buffer);
dest = null;//断点
mFBOCopy.FBOEnd();

在 dest = null; 打个断点,就能在 android studio 查看当前捕捉下来的 Bitmap,是 Unity 做完效果之后的。

以上就是详解Unity安卓共享纹理的详细内容,更多关于Unity安卓共享纹理的资料请关注得得之家其它相关文章!

本文标题为:详解Unity安卓共享纹理