[DX9] UpdateTexture - Merkwürdiges Problem

Für Fragen zu Grafik APIs wie DirectX und OpenGL sowie Shaderprogrammierung.
Antworten
DomiOh
Establishment
Beiträge: 132
Registriert: 08.10.2002, 14:44

[DX9] UpdateTexture - Merkwürdiges Problem

Beitrag von DomiOh »

Hallo Community,

ich habe ein merkwürdiges Problem. Wozu ich das ganze benötige, will ich jetzt hier nicht so ausschweifend erklären, denn es tut bei dem Problem ansich nichts zur Sache.

Ich bin auf ein merkwürdiges Problem mit der UpdateTexture Funktion des D3D9-Device gestoßen und zwar:
Ich versuche eine Texture von einer Source auf eine Destination-Textur zu kopieren (mit UpdateTexture), das klappt auch.
Versuche ich aber mit einem 2. UpdateTexture Aufruf die GLEICHE Source-Texture auf eine 2. Dest-Textur zu kopieren, wird nichts mehr kopiert. Und zwar von diese Source-Textur NIE mehr.

Um Fragen vorzubeugen: Alle Texturen haben das selbe Format, die Source liegt, wie es sein soll im System-Mem, die beiden Dest im Default-Mem.

Weiß das jemand was drüber?
Benutzeravatar
Schrompf
Moderator
Beiträge: 4854
Registriert: 25.02.2009, 23:44
Benutzertext: Lernt nur selten dazu
Echter Name: Thomas Ziegenhagen
Wohnort: Dresden
Kontaktdaten:

Re: [DX9] UpdateTexture - Merkwürdiges Problem

Beitrag von Schrompf »

Rückgabewerte? Fehlercodes? Steht was im DirectX-Debug-Log? Die sind normalerweise sehr geschwätzig, damit sollte sowas zu finden sein. Wird wirklich nichts kopiert? Oder siehst Du evtl. nur nichts davon, weil Du aus Versehen noch ein Lock drauf hast oder der Inhalt sich inzwischen geändert hat?
Früher mal Dreamworlds. Früher mal Open Asset Import Library. Heutzutage nur noch so rumwursteln.
DomiOh
Establishment
Beiträge: 132
Registriert: 08.10.2002, 14:44

Re: [DX9] UpdateTexture - Merkwürdiges Problem

Beitrag von DomiOh »

Keine Fehlermeldungen, keine Logs, keine Rückgabewerte. Nein es wird wirklich nichts kopiert. Das funktioniert danach mit einer anderen Textur als Source - aber wieder nur als kopie auf EINE der Dest-Texturen. Danach nicht mehr.
Kein Lock nichts. Ach und: Im PIX, der ja einen Ref-Renderer nimmt funzt das.
Nur nicht als HAL-Device.
Benutzeravatar
Schrompf
Moderator
Beiträge: 4854
Registriert: 25.02.2009, 23:44
Benutzertext: Lernt nur selten dazu
Echter Name: Thomas Ziegenhagen
Wohnort: Dresden
Kontaktdaten:

Re: [DX9] UpdateTexture - Merkwürdiges Problem

Beitrag von Schrompf »

Mein Beileid. Wenn ich gemein wär, würde ich jetzt sagen: kauf Dir ne NVidia-Grafikkarte, da passiert sowas nicht. Allerdings sähe das ganz schön blöd aus, wenn es schon ne NVidia ist :-) Lösungsideen habe ich keine mehr.
Früher mal Dreamworlds. Früher mal Open Asset Import Library. Heutzutage nur noch so rumwursteln.
Benutzeravatar
Krishty
Establishment
Beiträge: 8238
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: [DX9] UpdateTexture - Merkwürdiges Problem

Beitrag von Krishty »

DomiOh hat geschrieben:Ach und: Im PIX, der ja einen Ref-Renderer nimmt funzt das.
PIX nimmt Ref nur, wenn man es explizit einstellt. Alles andere läuft genau so über die GPU wie im Programm selber auch. (So ist das zumindest unter D3D >=10). Was jedoch bei mir in PIX ständig andere Ergebnisse produziert als in der Anwendung, ist Anti-Aliasing …

Gruß, Ky
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
DomiOh
Establishment
Beiträge: 132
Registriert: 08.10.2002, 14:44

Re: [DX9] UpdateTexture - Merkwürdiges Problem

Beitrag von DomiOh »

Schrompf hat geschrieben:Mein Beileid. Wenn ich gemein wär, würde ich jetzt sagen: kauf Dir ne NVidia-Grafikkarte, da passiert sowas nicht. Allerdings sähe das ganz schön blöd aus, wenn es schon ne NVidia ist :-) Lösungsideen habe ich keine mehr.
Es passiert sowohl bei einer NVidia 8xxx als auch bei einer ATI 4850 und einer ATI 6850 und einer ATI 6950.
Dirk Schulz
Establishment
Beiträge: 130
Registriert: 01.03.2009, 14:21
Alter Benutzername: frittentuete

Re: [DX9] UpdateTexture - Merkwürdiges Problem

Beitrag von Dirk Schulz »

Hi,
IDirect3DDevice9::UpdateTexture retrieves the dirty portions of the texture by calculating what has been accumulated since the last update operation.
Da du zweimal dieselbe Source-Textur nimmst, kann es sein, dass er damit Probleme hat bzw. keine Änderung zum letzten Update feststellt?! :?:

Wäre nen Versuch wert, einfach source-tex->UpdateDirtyRect(NULL); vor der zweiten UpdateTexture().

Dirk Schulz
Benutzeravatar
dot
Establishment
Beiträge: 1734
Registriert: 06.03.2004, 18:10
Echter Name: Michael Kenzel
Kontaktdaten:

Re: [DX9] UpdateTexture - Merkwürdiges Problem

Beitrag von dot »

Das dürfte sogar ziemlich sicher das Problem sein dass du das vergessen hast. Die Funktion heißt AddDirtyRect(). Source->AddDirtyRect(0); sollte das Problem beheben...
DomiOh
Establishment
Beiträge: 132
Registriert: 08.10.2002, 14:44

Re: [DX9] UpdateTexture - Merkwürdiges Problem

Beitrag von DomiOh »

Ja, das habe ich vergessen. Bin zwar inzwischen selbst drauf gekommen und wollte gerade GELÖST schreiben, aber dennoch danke.
In letzter Zeit arbeite ich mehr mit DX10. Da scheint es sowas wie ein DirtyRect ja nicht mehr zu geben ;)
Daher hatte ich das schlicht und einfach vergessen.
Antworten