我在 Android 中使用 Camera2 API 制作了一个相机应用程序,一个不拍照的全屏相机,我将它应用于所有预览,我想要做的是只将负面效果应用于预览的一半,示例:
这是我的代码: Link to my code on github
我会很感激你的帮助,因为我迷路了,我不知道该怎么做:(
最佳答案
不幸的是,您必须在此处进行自定义渲染,因为 camera2 或 cameraX API 中的任何内容都不会为您执行此操作。
基本上,您需要将相机输出发送到 GPU,并使用 GL 着色器代码编写您自己的自定义负面效果。
有很多样板文件可以到达您想要的位置,但您不太可能有任何其他现实的选择。虽然 ImageView 和其他一些 Android UI API 允许对它们的输出应用一些效果或颜色变换,但我不认为你可以让它们给你一半的负面 View ,而不会有明显的性能问题。
要将相机图像数据发送到 GPU,请使用 SurfaceTexture 作为输出目标,然后在您的 EGL 代码中使用 SurfaceTexture 的纹理 ID 作为源纹理。
关于java - Android 如何只为半屏应用相机效果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60728633/