openGL对纹理坐标系平移旋转后图形被拉伸怎么处理?

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

clipboard.png

我的思路是对一个圆进行旋转缩放。
首先我对纹理坐标系进行了变换,uv = 2.0*uv-1.0;

clipboard.png

之后对横轴坐标进行缩小:uv.x = uv.x*0.8;
再对坐标系进行旋转:
uv.x = uv.x cosA - uv.y sinA;
uv.y = uv.x sinA + uv.ycosA;
结果得到的圆如下:

clipboard.png

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

clipboard.png

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

clipboard.png

阅读 3.1k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进