Das Projekt, an dem ich gerade arbeite, benötigt die Möglichkeit, eine der vier Ecken eines Bildes zu transformieren. Da GDI + diese Fähigkeit leider nicht besitzt, greifen wir auf die 3D-Grafik von DirectX zurück.Rendern von DirectX-3D-Grafiken direkt auf ein Bild unter Verwendung von C#
Während ich ein Quadratmesh mit einer Textur habe, die erfolgreich auf dem Bildschirm angezeigt wird, muss ich in der Lage sein, ein Bild von diesem Rendering zu generieren, wobei der Hintergrund auf transparent gesetzt ist. Gibt es eine Möglichkeit, dies effizient zu erreichen?
Am liebsten würde ich dies tun, ohne ein Control für die Initialisierung eines Geräts zu verwenden. Alternativ ist es mir egal, dass ich ein benutzerdefiniertes, unsichtbares Steuerelement erstellen kann, das ein Bild für mich generiert.
bearbeiten:
Eigentlich wurde mir klar, nur einen transparenten Hintergrund streng genommen nicht notwendig ist, aber es würde die Leistung unseres Projekts ein wenig helfen.
Wie auch immer, ich hatte etwas Glück, etwas zu tun, aber es ist übermäßig langsam. Vielleicht gibt es eine bessere Methode?
// Create a surface to render an image to
Surface mSurface = mDevice.GetRenderTarget(0);
// Render the visualization
mDevice.Clear(ClearFlags.Target, Color.Transparent, 1.0f, 0);
mDevice.BeginScene();
/* Do some amazing stuff */
// Exit rendering
mDevice.EndScene();
mDevice.Present();
// Render the bitmap images
GraphicsStream mGraphics = SurfaceLoader.SaveToStream(
ImageFileFormat.Bmp, mSurface);
Image mImage = new Bitmap(mGraphics, false);
Ich bemerkte, dass der Oberflächenkonstruktor eine Bitmap aufnimmt. Wenn ich ein Surface mit einem Bitmap im Speicher erstellt habe, würde das Rendern auf dieses Surface das gehaltene Bitmap ebenfalls aktualisieren? – Japtar
Ich frage mich, ob das Erstellen einer Oberfläche und einer Bitmap mit den gleichen Stream-Informationen auch funktionieren würde ... – Japtar