2012-10-13 58 views
4

我有一个Android 4.0应用程序,它使用GL_OES_EGL_image_external渲染视频作为OpenGL表面的方法。这很好。另外,我想在其上扩展/变形一些补丁。目前,我正在为那些区域顶部的某些四边形添加一些着色器来遮挡那些我想要弯曲的区域。我被困在如何获得基础颜色。视频四方形顶部的四边形上的着色器如何扭曲底层图像?可能吗?使用OpenGL ES 2.0可以扭曲底层图像吗?

回答

3

我在iOS上,但我的应用程序做了非常类似的事情。

我如何实现它取决于sample code from Apple(特别是看RippleModel.m)。它的工作原理是它将视频纹理视频放置在四边形上,但放置在高度细分的网格上,因此您可以获得大量具有大量纹理坐标的三角形。它以编程方式创建此网格的顶点 - 更重要的是,它还以编程方式创建纹理坐标 - 并将它们保存在数组中。

对于每一帧,它遍历所有的顶点并更新每个顶点的纹理坐标,根据用户触摸的位置以纹理模式“翘曲”它们,并根据周围顶点具有多少纹理偏移。因此,几何体完全不会改变,并且它们不会在着色器中执行扭曲,它们都是在纹理坐标中完成的;着色器然后只是在接收到的坐标上进行直纹理查找。所以很难说这种方法是否适合您的需求,但是如果您的经纱只发生在2D中,并且您可以弄清楚如何将经纱定义为纹理坐标调整,这可能会有所帮助。