ContinuousCaptureActivity中如何让相机预览的区域为SurfaceView的一半

How to make the area of camera preview be half of SurfaceView in ContinuousCaptureActivity

我想让相机预览的区域是SurfaceView的一半,所以我修改了ContinuousCaptureActivity的代码。 详情如下:

GLES20.glViewport(0, 0, viewWidth / 2, viewHeight / 2);代替https://github.com/google/grafika/blob/master/src/com/android/grafika/ContinuousCaptureActivity.java#L436

但是结果很奇怪,见下图

实在是看不懂,正确的做法是什么?

谁能给我一些建议?

我的第一个想法是你需要一个 glClear() 在那里(视口设置为覆盖整个表面)因为你不再用 blit 填充整个表面。否则你会得到未初始化的数据,在基于图块的架构上,事情会变得很奇怪。

摆弄视口并不是正确的做法。只需绘制一个较小的矩形。使用 Sprite2d 并更改 X/Y 比例因子。有关示例,请参见 TextureFromCameraActivity——您可以缩放矩形、放大、旋转等。