Entwickler-Ecke

Multimedia / Grafik - DirectX zeichnet Textur zu groß


BCT1 - Sa 28.05.11 15:45
Titel: DirectX zeichnet Textur zu groß
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.0f0); // Clear window
    device.BeginScene();
    sprite.Begin(SpriteFlags.AlphaBlend);


    Rectangle textureSize;
    using (Surface surface = textur.GetSurfaceLevel(0))
    {
        SurfaceDescription surfaceDescription = surface.Description;
        textureSize = new Rectangle(00, 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


Blacal - Sa 25.06.11 15:51

Da würden mir spontan mehrere Möglichkeiten einfallen:

Welche DirectX-Schnittstelle verwendest du überhaupt? SlimDX, XNA, ManagedDirectX?

Gruß
Roland