我正在使用opengles 2.0创建一个Android应用程序,我有这样的相机预览:
但我想简单地在红色甜甜圈形状的一侧扭曲。所以我试图从纹理裁剪那部分并映射到像矩形的形状。但是我不知道那个部分究竟有什么方法可以有效地做到这一点?
答案 0 :(得分:1)
假设我们有一个带有uv坐标(s,t)的矩形R,其中s,t元素[0,1]。我们有一个由中心C,内半径ri和外半径ro给出的环。
如果我们想要将uv坐标(s,t)映射到环纹理中的坐标(s_tex,t_tex),那么可以使用以下公式来完成:
//alpha: angle
alpha = t * 2 * PI //maps the [0,1] range of t to [0, 2*PI] (circle)
//r: distance from the center
r = ir + s * (or - ir) //maps s=[0,1] to [ir, or]
//d: direction from the center c
d = [sin(alpha), cos(alpha)]
//final coordinates
[s_tex, t_tex] = C + d * r
注意,必须在环纹理的纹理坐标中给出C, ri, ro
。
根据您想要在环中切割的位置(矩形的开始/结束位置的位置),可能需要为alpha添加常数因子。此时此因子为0,这意味着切割从C水平向右移动。