Hi
nachdem ich bis jetzt nur die sprite klasse benutzt habe im mit D3D 2D texturen darzustellen habe ich nun auf vertieces umgestellt.
Mein problem momentan ist nur das er nicht richtig rotiert,
/// <summary>
/// Draw Texture and rotate it
/// </summary>
/// <param name="x">The X Position</param>
/// <param name="y">The Y Position</param>
/// <param name="angle">The angle for the rotation in Degrees</param>
public void RenderTexture(int x, int y, int angle)
{
// Init Stream Source
(DirectXForm.Device).SetStreamSource(0,vertexBuffer,0);
// Set CustomVertex Format
(DirectXForm.Device).VertexFormat = CustomVertex.PositionTextured.Format;
// Rotate texture(Z axies)
matrix = Matrix.RotationZ( RAD * angle );
// Set Position per translate
matrix *= Matrix.Translation(-1f + (float)((2*x*(100/(float)DirectXForm.Resolution.Width))/100),
1f - (float)(2*(y*(100/(float)DirectXForm.Resolution.Height))/100),
0f);
// Transform object matrix to World Matrix
DirectXForm.Device.SetTransform(TransformType.World, matrix);
// Set the texture into the device
(DirectXForm.Device).SetTexture(0, texture);
// Draw the Vertices & Texture
(DirectXForm.Device).DrawPrimitives(PrimitiveType.TriangleFan, 0,2);
}
OK source ist nicht wirklich spitze(grad kommentare😉)
Aber ich denke es sagt aus was ich mache.
RAD:
float RAD = (float)((2*Math.PI)/360);
Wie bekomm ich es nun hin das er sauber um den mittelpunkt rotiert?
Habs auf verschiedene arten versucht nur nix klappt wirklich da ich ja per Translation die X,Y werte berechne und so nicht fürden mittelpunkt benutzen kann(meines wissens nach jedenfalls).
Anbei ein bild das das problem aufzeigt(ja abrtiges bild und farben ich weiß 😉
Und hierder aufruf zum rendernderbilder:
texture1.RenderTexture(180,180,0);
texture1.RenderTexture(180,180,90);
texture1.RenderTexture(180,180,180);
texture1.RenderTexture(180,180,270);
texture1.RenderTexture(500,400);
Habs nun endlich über Transformation2D verbessern können, ich kann nun um den mittelpunkt rotieren, aber trozdem hab ich noch immer dieseverzerrung, worran kann das liegen ?
wenn ich als skalierung 1f,1f angeben ist es ja orginal größe da ist es verzerrt, bei 1.5f,1.5f aber nicht mehr, oder nur noch sehr wenig.
Wie kommt das?
Ich hoffe es kann mal einer was dazu sagen da ich dasproblem seit 4-5Tagen habe und jedentag 2-5 stunden dransaß bisjetzt 🙁