Autor Beitrag
BCT1
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 36



BeitragVerfasst: Sa 28.05.11 15:45 
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:
ausblenden 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:
ausblenden 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
Hält's aus hier
Beiträge: 1



BeitragVerfasst: Sa 25.06.11 15:51 
Da würden mir spontan mehrere Möglichkeiten einfallen:

  • Welche Größe hat dein BackBuffer?
    Ist dieser größer bzw. kleiner wie das Control, so wird skaliert.
  • Die Texturgröße 640x480 gefällt mir jetzt nicht wirklich. Breite und Höhe sollten jeweils eine 2er Potenz sein, also zum Beispiel 128, 256, 512, .... Ist zwar in den aktuellen DirectX-Versionen nicht mehr so wichtig, aber eventuell verzettelt sich ja da was.

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

Gruß
Roland