[DX 10] Textureproblem
- Krishty
- Establishment
- Beiträge: 8350
- Registriert: 26.02.2009, 11:18
- Benutzertext: state is the enemy
- Kontaktdaten:
Re: [DX 10] Textureproblem
Du kannst keine Textur zwischen CPU und GPU teilen. Weil das unter D3D9 einer der häufigsten Bottlenecks war, wurde eingeführt, dass du zwei Texturen brauchst: Eine dynamische Textur auf der GPU und eine Staging-Textur. Du füllst die Staging-Textur (erzeugt mit D3D10_USAGE_STAGING und CPU-Access) mit der CPU und kopierst ihren Inhalt in die GPU-Textur, sobald es nötig ist. Auf die Art und Weise muss das Rendering niemals mit der CPU synchronisiert werden.
Gruß, Ky
Gruß, Ky
- Krishty
- Establishment
- Beiträge: 8350
- Registriert: 26.02.2009, 11:18
- Benutzertext: state is the enemy
- Kontaktdaten:
Re: [DX 10] Textureproblem
Staging-Texturen können selbstverständlich auch nicht als Shader-Resourcen gebunden werden ;)
- Krishty
- Establishment
- Beiträge: 8350
- Registriert: 26.02.2009, 11:18
- Benutzertext: state is the enemy
- Kontaktdaten:
Re: [DX 10] Textureproblem
D3D10_BIND_SHADER_RESOURCE muss zu 0 umgeändert werden.
- Aramis
- Moderator
- Beiträge: 1458
- Registriert: 25.02.2009, 19:50
- Echter Name: Alexander Gessler
- Wohnort: 2016
- Kontaktdaten:
Re: [DX 10] Textureproblem
Rumheulen bringt nichts .. aber Krishty hat die Frage bereits weiter oben beantwortet. Vielleicht hilft das schon eher, ich weiß es nicht.Ok ich nehme an wir haben nun erfolgreich eine Textur manuell angelegt aber wie bekommen
wir die nun in den Graphikkartenspeicher zur Verwendung als Resource.
- Krishty
- Establishment
- Beiträge: 8350
- Registriert: 26.02.2009, 11:18
- Benutzertext: state is the enemy
- Kontaktdaten:
Re: [DX 10] Textureproblem
Ich sage dazu ID3D10Device::CopyResource() oder ID3D10Device::CopySubresourceRegion().
- Krishty
- Establishment
- Beiträge: 8350
- Registriert: 26.02.2009, 11:18
- Benutzertext: state is the enemy
- Kontaktdaten:
Re: [DX 10] Textureproblem
D3D10_BIND_SHADER_RESOURCE. Falls das nicht hilft, in den Debug-Output schauen – der sagt normalerweise auch, warum eine Funktion fehlschlägt.
- Krishty
- Establishment
- Beiträge: 8350
- Registriert: 26.02.2009, 11:18
- Benutzertext: state is the enemy
- Kontaktdaten:
Re: [DX 10] Textureproblem
Du kannst auch den „Ändern“-Button benutzen, statt für jede Kleinigkeit Doppel- und Dreifach-Posts anzulegen.
- Krishty
- Establishment
- Beiträge: 8350
- Registriert: 26.02.2009, 11:18
- Benutzertext: state is the enemy
- Kontaktdaten:
Re: [DX 10] Textureproblem
Wenn du nur eine Bilddatei in den Speicher laden möchtest, die sich später nicht mehr ändert, geht das schneller und einfacher ohne Staging und mit den Initial-Data bei CreateTexture2D.
- Krishty
- Establishment
- Beiträge: 8350
- Registriert: 26.02.2009, 11:18
- Benutzertext: state is the enemy
- Kontaktdaten:
Re: [DX 10] Textureproblem
Ganz abgesehen vom Sinn und Unsinn, Abstraktion über den Haufen zu werfen – wenn du Initial-Data angibst ist das auch eine Frickelei mit Bytes, nur, dass die GPU Texturen, die bei ihrer Initialisierung gefüllt und dann nie wieder angetastet werden („immutable“), auch schneller managen kann.
Übrigens verarbeitet Direct3D deine Texturen auch wieder ganz anders, als du sie in eine gelockte Textur kopierst.
Übrigens verarbeitet Direct3D deine Texturen auch wieder ganz anders, als du sie in eine gelockte Textur kopierst.
Re: [DX 10] Textureproblem
...die sich aber oft hinter Vetraulichkeitsvereinbarungen verbirgt. Fuer einige Architekturen findest Du veroeffentlichte Dokumente, aber leider nicht fuer alle. Dort hinein musst Du schauen, wenn Du wissen willst, was 'unten' auf der HW abgeht. Dann kommst Du vor lauter lesen aber kaum mehr dazu, was schickes zu coden ;)exploid hat geschrieben:...werde ich das für mich ablehnen und die Bits und Bytes suchen um "die Wahrheit zu sehen".
- Krishty
- Establishment
- Beiträge: 8350
- Registriert: 26.02.2009, 11:18
- Benutzertext: state is the enemy
- Kontaktdaten:
Re: [DX 10] Textureproblem
Hier habe ich übrigens noch ein altes Code-Snippet, wie man Texturen direkt aus Pixeldaten im RAM erzeugt … falls es nützlich ist, schön … falls nicht, sorry, dass ich MS zur Weltherrschaft verhelfe.