Du bist nicht angemeldet.

Werbeanzeige

BlazeX

Alter Hase

  • »BlazeX« ist der Autor dieses Themas

Beiträge: 478

Wohnort: DD

Beruf: Maschinenbau-Student

  • Private Nachricht senden

1

22.01.2010, 20:26

[Erledigt][[D3D11] Frage zu Textur per ThreadPump laden

Hi Leute! oder eher Hi dot!

Das Laden von Texturen in D3D11 funktioniert ja mit D3DX11CreateTextureFromFile. Dieser Funktion kann man eine ThreadPump übergeben, damit die Textur asynchron geladen werden kann.
Das ist auf jeden Fall praktisch, weil man nebenbei dann den Rest initialisieren kann.

Aber was ist, wenn man eine Textur zum Laden schickt und beim Rendern diese Textur aber schon benötigt, obwohl sie noch garnicht geladen ist?
Wird dann intern mit einer "schwarzen Textur" gearbeitet (wäre mir am liebsten, da somit das Rendern nicht blockiert wird und sobald die Textur da ist, ist wieder alles in Ordnung) oder gibt es Fehler ohne Ende ala Resource not found?

Black-Panther

Alter Hase

Beiträge: 1 445

Wohnort: Innsbruck

  • Private Nachricht senden

2

22.01.2010, 21:45

Schau mal in die Dokumentation von dieser Funktion rein ;-)

Zitat

pHResult
[out] A pointer to the return value. May be NULL. If pPump is not NULL, then pHResult must be a valid memory location until the asynchronous execution completes.


Du musst sicherstellen, dass die Texture geladen wurde. Heißt, du musst vor der ersten Benutzung auf jeden fall den return-Value abfragen. Wenn du das nicht machst, ist das verhalten nicht definiert, würd ich mal sagen ;)
stillalive studios
Drone Swarm (32.000 Dronen gleichzeitig steuern!)
facebook, twitter

BlazeX

Alter Hase

  • »BlazeX« ist der Autor dieses Themas

Beiträge: 478

Wohnort: DD

Beruf: Maschinenbau-Student

  • Private Nachricht senden

3

23.01.2010, 12:09

Dass diese Funktion 2 Results zurückgibt, hab ich auch schon gesehen. Danke trotzdem.
Aber was soll das jetzt heißen?
Bringt das asynchrone Laden denn überhaupt keine Vorteile?
Wenn ich die Textur brauch muss ich doch dann sowieso warten, bis sie geladen ist.

dot

Supermoderator

Beiträge: 9 851

Wohnort: Graz

  • Private Nachricht senden

4

23.01.2010, 12:20

Zitat von »"BlazeX"«

Wenn ich die Textur brauch muss ich doch dann sowieso warten, bis sie geladen ist.


Ja klar, darum isses empfehlenswert die Dinge so zu laden dass sie da sind wenn du sie brauchst. Ansonsten musst du halt ohne auskommen oder nen Dummy verwenden bis sie geladen ist.

Zitat von »"BlazeX"«

Bringt das asynchrone Laden denn überhaupt keine Vorteile?


Sicher bringt es Vorteile. Denk nur an riesige MMORPG Maps die viel zu groß sind um alles im Speicher zu halten. Da wird man immer nur das laden was man gerade braucht und die Dinge die man in naher Zukunft vermutlich brauchen wird (z.B. weil der Spieler grad in diese Richtung lauft) im Hintergrund schonmal laden...

BlazeX

Alter Hase

  • »BlazeX« ist der Autor dieses Themas

Beiträge: 478

Wohnort: DD

Beruf: Maschinenbau-Student

  • Private Nachricht senden

5

23.01.2010, 12:46

Na dann wäre alles klar.

BTW: ich hab mal die Übersicht "Von der Datei zum Display" fertig gemacht:

(Link)

Werbeanzeige