iOS 使用opengles 绘制的摄像头比使用AVCaptureVideoPreviewLayer要窄

姚小白 2015-08-31 01:04:17
使用AVCaptureVideoPreviewLayer显示摄像头是正常的画面,但当我操作某项操作,想在摄像头画面上用opengles绘制自己的图像时,背景就用opengles绘制了摄像头的画面,但此时的画面比AVCaptureVideoPreviewLayer要窄,发送了形变,但画面没有黑边。我想提问2个问题:
1.能否在AVCaptureVideoPreviewLayer上用OpenGL绘制,是否只有CAEAGLLayer才能绘制

2.如果AVCaptureVideoPreviewLayer不能绘制,那上面的问题应该是哪里出问题了?Opengles设置时:

[_glContext renderbufferStorage:GL_RENDERBUFFER fromDrawable:(CAEAGLLayer *)self.layer];

...全文
635 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
姚小白 2015-09-02
  • 打赏
  • 举报
回复
滤镜那篇文章我看了一下 没有多少我这能用到的地方啊 考虑多个方面的因素 ,我现在觉得 如果能在AVCaptureVideoPreviewLayer上渲染那是最好的,只是渲染一部分,如在camera背景上某个特定的部分添加一个矩形什么的
姚小白 2015-09-01
  • 打赏
  • 举报
回复
引用 10 楼 zhangao0086 的回复:
我记得 output 里好像有一个 videoSettings,你可以试试这个属性。这应该是设置内容输出的。
输出设置并没有设置尺寸。AVCaptureSession可以设置尺寸,但都是系统固定的几个,我当前使用的是640x480。但AVCaptureVideoPreviewLayer进行输出 就可以裁剪,AVCaptureVideoPreviewLayer设置成675x375的尺寸,但它显示camera的时候不会把多余的部分全部拉伸之后显示进来。 所以我在想能否在AVCaptureVideoPreviewLayer上进行我自己的OpenGL绘制?
姚小白 2015-09-01
  • 打赏
  • 举报
回复
引用 12 楼 zhangao0086 的回复:
[quote=引用 11 楼 u010425713 的回复:] [quote=引用 10 楼 zhangao0086 的回复:] 我记得 output 里好像有一个 videoSettings,你可以试试这个属性。这应该是设置内容输出的。
输出设置并没有设置尺寸。AVCaptureSession可以设置尺寸,但都是系统固定的几个,我当前使用的是640x480。但AVCaptureVideoPreviewLayer进行输出 就可以裁剪,AVCaptureVideoPreviewLayer设置成675x375的尺寸,但它显示camera的时候不会把多余的部分全部拉伸之后显示进来。 所以我在想能否在AVCaptureVideoPreviewLayer上进行我自己的OpenGL绘制?[/quote] 如果那样的话,何必要使用 AVCaptureVideoPreviewLayer?我有篇实时滤镜的博客,里面是自己渲染的[/quote] 主要是自己使用opengl渲染发现变形,使用AVCaptureVideoPreviewLayer则不会,所以在想能否在AVCaptureVideoPreviewLayer上渲染。我先看下您的博客
Bannings 2015-09-01
  • 打赏
  • 举报
回复
引用 11 楼 u010425713 的回复:
[quote=引用 10 楼 zhangao0086 的回复:] 我记得 output 里好像有一个 videoSettings,你可以试试这个属性。这应该是设置内容输出的。
输出设置并没有设置尺寸。AVCaptureSession可以设置尺寸,但都是系统固定的几个,我当前使用的是640x480。但AVCaptureVideoPreviewLayer进行输出 就可以裁剪,AVCaptureVideoPreviewLayer设置成675x375的尺寸,但它显示camera的时候不会把多余的部分全部拉伸之后显示进来。 所以我在想能否在AVCaptureVideoPreviewLayer上进行我自己的OpenGL绘制?[/quote] 如果那样的话,何必要使用 AVCaptureVideoPreviewLayer?我有篇实时滤镜的博客,里面是自己渲染的
Bannings 2015-08-31
  • 打赏
  • 举报
回复
我记得 output 里好像有一个 videoSettings,你可以试试这个属性。这应该是设置内容输出的。
姚小白 2015-08-31
  • 打赏
  • 举报
回复
引用 8 楼 zhangao0086 的回复:
如果可能的话,能把你的Demo 工程发上来吗?
这个恐怕不能 公司签订保密协议的 我现在想: 1.能否在opengles绘制的layer上添加ui?譬如我的扫描框 2.能否改变AVCaptureVideoPreviewLayer的大小?因为camera是640x480 ,AVCaptureVideoPreviewLayer大小现在是375x675 3.要是再不行那 用OpenGL渲染camera帧的时候是否就只能渲染一部分了
Bannings 2015-08-31
  • 打赏
  • 举报
回复
如果可能的话,能把你的Demo 工程发上来吗?
姚小白 2015-08-31
  • 打赏
  • 举报
回复
引用 6 楼 zhangao0086 的回复:
相关的代码发上来?
opengles 并不熟悉 是别人写的 我只写ios版的 但在opengl里用到 glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, tcameraW, tcameraH, GL_RED_EXT, GL_UNSIGNED_BYTE, cameraData); //其中tcameraW 用的是摄像头的宽高
Bannings 2015-08-31
  • 打赏
  • 举报
回复
相关的代码发上来?
姚小白 2015-08-31
  • 打赏
  • 举报
回复
引用 4 楼 zhangao0086 的回复:
[quote=引用 3 楼 u010425713 的回复:] 以上2图 都差不多在一个相同的视角距离 拍摄的
你用 OpenGLES 绘图的过程有问题吧?[/quote] 屏幕尺寸 375x667 摄像头获取的时候设置的480x640 应该是这个原因 ,但不知道怎么处理,让opengl显示的时候和用AVCaptureVideoPreviewLayer显示时一样
Bannings 2015-08-31
  • 打赏
  • 举报
回复
引用 3 楼 u010425713 的回复:
以上2图 都差不多在一个相同的视角距离 拍摄的
你用 OpenGLES 绘图的过程有问题吧?
姚小白 2015-08-31
  • 打赏
  • 举报
回复
以上2图 都差不多在一个相同的视角距离 拍摄的
姚小白 2015-08-31
  • 打赏
  • 举报
回复
引用 1 楼 zhangao0086 的回复:
有两者比较的截图吗?


使用AVCaptureVideoPreviewLayer:


使用Opengles绘制的图:
Bannings 2015-08-31
  • 打赏
  • 举报
回复
有两者比较的截图吗?

29,028

社区成员

发帖
与我相关
我的任务
社区描述
主要讨论与iOS相关的软件和技术
社区管理员
  • iOS
  • 大熊猫侯佩
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧