想画一个如下所示的近似的椭圆:

我的思路是对一个圆进行旋转缩放。
首先我对纹理坐标系进行了变换,uv = 2.0uv-1.0;
之后对横轴坐标进行缩小:uv.x = uv.x0.8;
再对坐标系进行旋转:
uv.x = uv.x * cosA - uv.y * sinA;
uv.y = uv.x * sinA + uv.ycosA;
结果得到的圆如下:

如果先旋转再缩小得到的圆如下:

如果不做旋转操作,只做缩放操作:

请问如何正确的画出那个想要的椭圆,拉伸的原因是坐标系变换的不对吗?
`varying vec4 v_fragmentColor;
varying vec2 v_texCoord;
void main()
{
vec4 src_color = texture2D(CC_Texture0, v_texCoord).rgba;
vec2 uv= v_texCoord.xy;
uv = 2.0uv - 1.0 ;
float angel = 60.0*3.14/180.0;
float sinA = sin( angel );
float cosA = cos( angel );
uv.x = uv.x*1.4;
uv.x = uv.x * cosA - uv.y * sinA;
uv.y = uv.x * sinA + uv.y*cosA;
// 用纹理坐标来确定大小和位置
vec2 position = (uv) ;
float d = abs( length(position) - 0.5) * 5.0;
src_color = src_color + vec4(0.1/d, 0.1 / d, 0.1/d, 1);
gl_FragColor = v_fragmentColor * src_color;
}`
lightShaderCircle.zip (1024.0 KB)
