2011-09-19 18 views
6

Me gustaría rotar una textura en XNA. Sé que puedo rotarlo cuando se dibuja, pero me gustaría que la variable Texture2D sea la textura girada. ¿Hay alguna manera de hacer esto?XNA Girar textura 2D

Respuesta

5

Usa RenderTarget, dibuja tu textura rotada en RenderTarget, toma la textura y guárdala.

+0

¿Tiene un ejemplo? – matrixugly

1

Una forma sería pasar una matriz de rotación a su sombreador y multiplicar sus texcoords antes de llamar a la muestra de textura.

No estoy seguro si XNA/DirectX tiene el mismo concepto que la matriz de texturas de OpenGL.

4

Debería proporcionar un nuevo sombreador que gestione la rotación de los coords de textura. Como el código HLSL del basiceffect es público, debería ser bastante fácil agregar este comportamiento.

Basic Effect HLSL code

Al pasar un parámetro de ángulo para el sombreado, debe ser la transformación:

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