【发布时间】:2013-05-13 20:22:00
【问题描述】:
我想在 XNA 中旋转纹理。我知道我可以在绘制时旋转它,但我希望 Texture2D 变量成为旋转后的纹理。有没有办法做到这一点?
【问题讨论】:
我想在 XNA 中旋转纹理。我知道我可以在绘制时旋转它,但我希望 Texture2D 变量成为旋转后的纹理。有没有办法做到这一点?
【问题讨论】:
使用 RenderTarget,将您的纹理旋转到 RenderTarget 中,获取纹理并保存。
【讨论】:
您应该提供一个管理纹理坐标旋转的新着色器。由于基本效果的 HLSL 代码是公开的,因此添加此行为应该很容易。
将角度参数传递给着色器,变换应该是:
newU = U*cos(alfa) - V*sin(alfa);
newV = U*sin(alfa) + V*cos(alfa);
【讨论】:
一种方法是将旋转矩阵传递给着色器,然后在调用纹理采样器之前将 texcoords 乘以该值。
我不确定 XNA/DirectX 是否与 OpenGL 的纹理矩阵有相同的概念。
【讨论】: