2011-09-19 19 views
6

Mi piacerebbe ruotare una Texture in XNA. So che posso ruotarlo quando viene disegnato, ma vorrei che la variabile Texture2D fosse la trama ruotata. C'è un modo per fare questo?XNA Rotate Texture 2D

risposta

5

Usa RenderTarget, disegna la tua texture ruotata nel RenderTarget, prendi la texture e salvala.

+0

Avete un esempio? – matrixugly

1

Un modo sarebbe passare una matrice di rotazione allo shader e moltiplicare i tuoi texcoords prima di chiamare il campionatore di trama.

Non sono sicuro che XNA/DirectX abbia lo stesso concetto della matrice di texture di OpenGL.

4

È necessario fornire un nuovo ombreggiatore che gestisca la rotazione delle corde di trama. Poiché il codice HLSL di basiceffect è pubblico, dovrebbe essere abbastanza semplice aggiungere questo comportamento.

Basic Effect HLSL code

passando un parametro angolazione allo shader, la trasformazione dovrebbe essere:

newU = U*cos(alfa) - V*sin(alfa); 
newV = U*sin(alfa) + V*cos(alfa);