AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi [DirectX] Teiltextur in neue Textur rendern
Thema durchsuchen
Ansicht
Themen-Optionen

[DirectX] Teiltextur in neue Textur rendern

Ein Thema von .chicken · begonnen am 21. Mai 2008 · letzter Beitrag vom 21. Mai 2008
Antwort Antwort
.chicken

Registriert seit: 5. Dez 2006
459 Beiträge
 
#1

[DirectX] Teiltextur in neue Textur rendern

  Alt 21. Mai 2008, 20:04
Hi, ich bins wiedermal

Meine Vorhaben ist folgendes: Ich habe eine T2DXAnimatedSprite-Klasse, in der ich, bevor sie gerendert wird, die Textur so transformiere, dass nur ein bestimmtes Frame aus der Textur gerendert wird.
Jetzt würde ich diesen Texturausschnitt vor dem Rendervorgang gerne in eine neue Textur rendern, in der dann nur das bestimmte Frame ist. Dadurch hätte ich die Möglichkeit das Frame auch wieder zu transformieren.

Meine Frage: Ist das zu performance-lastig, oder geht das von der Geschwindigkeit her?
Zweite Frage: Wie mache ich das? Ich weiss wie ich in eine Textur rendern kann. Aber wie kriege ich es hin, dass die neue Textur dann nur das alte Frame enthält? Ich habe bisher nur die gesamte Welt in eine Textur gerendert.
  Mit Zitat antworten Zitat
Benutzerbild von JasonDX
JasonDX
(CodeLib-Manager)

Registriert seit: 5. Aug 2004
Ort: München
1.062 Beiträge
 
#2

Re: [DirectX] Teiltextur in neue Textur rendern

  Alt 21. Mai 2008, 20:23
Wenn du etwas nicht in den Backbuffer, sondern einen anderen Speicherbereich rendern willst, sei als Stichwort [msdn:506deaeee7="IDirect3DDevice9 SetRenderTarget"]SetRenderTarget[/msdn:506deaeee7] genannt. Damit kannst du auch eine andere Textur als Render-Ziel festlegen, und später wieder wie eine normale Textur darauf zugreifen.
Wie musst du denn dein Texturframe transformieren, dass dies nicht anders geht? (Ich wage zu behaupten, dass es Performancemäßig nicht der ideale Weg ist).

greetz
Mike
Mike
Passion is no replacement for reason
  Mit Zitat antworten Zitat
.chicken

Registriert seit: 5. Dez 2006
459 Beiträge
 
#3

Re: [DirectX] Teiltextur in neue Textur rendern

  Alt 21. Mai 2008, 20:31
Naja, z.B. wenn es dann eine bewegte Textur sein soll, dh. dass die Textur sich stetig in eine Richtung bewegt.
Dazu müsste ich es erst in eine neue Textur rendern, um die dann nochmal transformieren zu können.

Ja, wie gesagt ich weiss wie ich die Textur als Rendertarget festlege, das steht im Buch "DirectX9 in Delphi".
Aber wie ich dann NUR das alte Frame der Textur und das fontral darein rendere weiss ich nicht. Es wird ja zB immer durch die Kamera transformiert.

Naja performance-technisch könnte ich das ja testen, müsste aber die doppelte Menge an Renderzeit brauchen oder?

Ich müsste nur erstmal wiessen wie ich das nun hinkriege
  Mit Zitat antworten Zitat
Benutzerbild von JasonDX
JasonDX
(CodeLib-Manager)

Registriert seit: 5. Aug 2004
Ort: München
1.062 Beiträge
 
#4

Re: [DirectX] Teiltextur in neue Textur rendern

  Alt 21. Mai 2008, 20:59
Zitat von .chicken:
Naja, z.B. wenn es dann eine bewegte Textur sein soll, dh. dass die Textur sich stetig in eine Richtung bewegt.
Dazu müsste ich es erst in eine neue Textur rendern, um die dann nochmal transformieren zu können.
Eine Textur legst du ja immer nur auf ein Primitive, den du transformierst wohin du ihn brauchst und dann renderst. Oder inwiefern meinst du "bewegen"?

Zitat von .chicken:
Ja, wie gesagt ich weiss wie ich die Textur als Rendertarget festlege, das steht im Buch "DirectX9 in Delphi".
Aber wie ich dann NUR das alte Frame der Textur und das fontral darein rendere weiss ich nicht. Es wird ja zB immer durch die Kamera transformiert.
Und die Matrix für die Kamera kannst du setzen... Um genau zu sein kannst du sogar alle 3 Matrizzen auf die Identitätsmatrix setzen, und als Vertexbuffer 2 Dreiecke nehmen, die ein Rechteck ((-1, -1), (1, 1)) ergeben, auf die 4 Vertices die Texturkoordinaten legen, die dein Frame beschreiben, und anschließendden Vertexbuffer in die Textur rendern.

greetz
Mike
Mike
Passion is no replacement for reason
  Mit Zitat antworten Zitat
.chicken

Registriert seit: 5. Dez 2006
459 Beiträge
 
#5

Re: [DirectX] Teiltextur in neue Textur rendern

  Alt 21. Mai 2008, 21:18
Ok, dann sehe ich in der Textur nur den alten Frame? Super, das versuche ich gleich.

Ja, ich könnte dann das Mesh bewegen. Aber die Textur zu bewegen eignet sich super um zB vorzugaukeln, dass die Wolken im Hintergrund vom Wind weggeweht werden. Wenn ich da immer das Mesh verschieben würde, wären die Wolken irgendwann "weg" (außerhalb der Kamera).
Hoffe du verstehst wie ich das meine.

Ich teste das nun mal und melde mich wieder

Edit: Argh, das stellt sich doch noch komplizierter dar, ich muss dafür irgendwie nochmal ne neue Klasse erstellen denke ich mal. Mal sehen wie ich das halbwegs sauber hinkriege

Danke soweit

Edit2: Hm das funktioniert irgendwie nicht. Die Textur ist hinterher total gestreckt. Naja ich lasse das erstmal, vielleicht setze ich mich später nochmal dran.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:37 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz