XNA - Rendertargets funktioniert nicht

Für Fragen zu Grafik APIs wie DirectX und OpenGL sowie Shaderprogrammierung.
Antworten
BCT1
Beiträge: 3
Registriert: 18.09.2010, 18:01

XNA - Rendertargets funktioniert nicht

Beitrag von BCT1 »

Hey, ich hab ein Problem mit Rendertargets. Ich muss einen Text mithilfe der Rendertargets in ein Texture2D bringen, doch immer wenn die Sprites in meinem Rendertarget gezeichnet sein sollten ist dort nur schwarzer Bereich. Ich hab keine Ahnung woran das liegen könnte, das Rendertarget lässt sich einfach nicht zeichnen.

Hoffe Ihr könnt mir helfen.
-BCT1
Benutzeravatar
RustySpoon
Establishment
Beiträge: 298
Registriert: 17.03.2009, 13:59
Wohnort: Dresden

Re: XNA - Rendertargets funktioniert nicht

Beitrag von RustySpoon »

Code bitte. ;)
BCT1
Beiträge: 3
Registriert: 18.09.2010, 18:01

Re: XNA - Rendertargets funktioniert nicht

Beitrag von BCT1 »

Damit zeichne ich in das Rendertarget und speichere die Datei:

Code: Alles auswählen

spriteBatch.Begin(SpriteBlendMode.None, SpriteSortMode.Texture, SaveStateMode.SaveState);

RenderTarget2D target = new RenderTarget2D(device, 800, 600, 1, device.DisplayMode.Format);
device.SetRenderTarget(0, target);

// Hier wird gedrawed

device.SetRenderTarget(0, null);

SpriteBatch.End();

Texture2D textur;
textur = target.GetTexture();
textur.Save("testbild.bmp", ImageFileFormat.Bmp);
Benutzeravatar
RustySpoon
Establishment
Beiträge: 298
Registriert: 17.03.2009, 13:59
Wohnort: Dresden

Re: XNA - Rendertargets funktioniert nicht

Beitrag von RustySpoon »

Die Reihenfolge deiner Aufrufe sieht falsch aus. Das Rendertarget solltest du irgendwo während der Initialisierung anlegen, zumindest nicht immer wieder neu. Und dann ist die klassische Reihenfolge: Rendertarget setzen, SpriteBatch begin, zeichnen, SpriteBatch end, RenderTarget freigeben und ab dann kannst du auf die Textur zugreifen.
BCT1
Beiträge: 3
Registriert: 18.09.2010, 18:01

Re: XNA - Rendertargets funktioniert nicht

Beitrag von BCT1 »

Stimmt, ich hätte "device.SetRenderTarget(0, null)" nachdem ich spriteBatch beendet hatte aufrufen sollen. Jetzt gehts.
Danke
hanna
Beiträge: 1
Registriert: 27.09.2010, 16:16
Echter Name: hanna

Re: XNA - Rendertargets funktioniert nicht

Beitrag von hanna »

Habe gleiche Erfahrung gemacht..
Firzen14
Beiträge: 1
Registriert: 07.10.2004, 15:11
Wohnort: Wanderup
Kontaktdaten:

Re: XNA - Rendertargets funktioniert nicht

Beitrag von Firzen14 »

Nur einfach nochmal zur Erklärung warum.
Die SpriteBatch-Klasse zeichnet nicht alles sofort wenn ihr einen Draw-Befehl gebt sondern reiht den in eine Queque, also eine Warteschlange, ein.
Sobald ihr SpriteBatch.End(); callt werden sämtliche gesammelten Draw-Aufrufe ausgeführt. Das passiert auch nicht notwendigerweise in der Reihenfolge in der sie aufgerufen wurden, denn dafür gibt es den SpriteSortMode.

Also im Prinzip hast du dir dein Rendertarget geholt, als du noch garnichts gezeichnet hattest, darum schwarz.
Nur so als kleiner Tipp hintendran, wenn ihr das Rendertarget auflöst wollt ihr möglicherweise den Backbuffer neu zeichnen weil ab und an Artefakte zurückbleiben können.

MfG
Firzen
Antworten