我正试图通过openGL在Android上绘制相机预览。通过SurfaceTexture获取预览纹理作为外部EGL图像,然后使用相当简单的着色器绘制它:
public List<Camera.Size> getSupportedResolutions()
{
List<Camera.Size> previewSizes = mCamera.getParameters().getSupportedPreviewSizes();
List<Camera.Size> pictureSizes = mCamera.getParameters().getSupportedPictureSizes();
pictureSizes.retainAll(previewSizes);
return pictureSizes;
}
private void setResolution(int position)
{
List<Camera.Size> res = getSupportedResolutions();
Camera.Parameters p = mCamera.getParameters();
p.setPictureSize(res.get(position).width, res.get(position).height);
p.setPreviewSize(res.get(position).width, res.get(position).height);
mCamera.setParameters(p);
}
在nexus 5上,它适用于所有预览图像,最高可达1280x960。然而,对于最大的2:1920x1080和1600x1200,屏幕只是空白。我通过 camera.getSupportedPreviewSizes 在我的相机中设置预览尺寸,所以我不想设置相机不支持的任何东西。
=IF(ISERROR(INDEX(Array_Range,SMALL(IF(Health_Check_Date<DATE(YEAR(TODAY())-2,MONTH(TODAY()),DAY(TODAY())),ROW(Health_Check_Date)),ROW($1:$1)),1)),"",INDEX(Array_Range,SMALL(IF(Health_Check_Date<=DATE(YEAR(TODAY())-2,MONTH(TODAY()),DAY(TODAY())),ROW(Health_Check_Date)),ROW($1:$1)),1))
任何暗示这些决议可能出错的建议?也许在opengl中有某种大小限制?
答案 0 :(得分:0)
我想出了问题。如果预览大小大于我的surfaceView的大小,我只是设置了不正确的视口。通过(0,screenW),(0,screenH)将其钳制来解决问题。外部图像没有单独的限制,这完全是我的错误