Hi, ich will mit DirectX eine einfache 2D-Textur zeichnen die 640x480 Pixel groß ist, aber sie wird zu groß angezeigt. Ich hab die Unterschiede mal berechnet und das angezeigte bild ist um 160% in der breite größer und etwa 110% in der höhe. Ich hab keine Ahnung wie das kommt und hab auch sonst nichts im internet zu diesem Fehler gefunden.
Hier mal mein Code:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22:
| protected override void OnPaint(PaintEventArgs e) { device.Clear(ClearFlags.Target, Color.Black, 1.0f, 0); device.BeginScene(); sprite.Begin(SpriteFlags.AlphaBlend);
Rectangle textureSize; using (Surface surface = textur.GetSurfaceLevel(0)) { SurfaceDescription surfaceDescription = surface.Description; textureSize = new Rectangle(0, 0, surfaceDescription.Width, surfaceDescription.Height); } sprite.Draw(textur, textureSize, Vector3.Empty, Vector3.Empty, Color.White);
sprite.End(); device.EndScene(); device.Present();
Invalidate(); } |
Und die Initialisierung von DirectX:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| PresentParameters pps = new PresentParameters(); pps.Windowed = true; pps.SwapEffect = SwapEffect.Discard; pps.BackBufferFormat = Format.Unknown; device = new Device(0, DeviceType.Hardware, this, CreateFlags.SoftwareVertexProcessing, pps); device.RenderState.SourceBlend = Blend.One; device.RenderState.DestinationBlend = Blend.One; device.RenderState.AlphaBlendEnable = true;
sprite = new Sprite(device); |
Ich hoffe Ihr könnt mir helfen.
-Gruß BCT1