IDirect3DDevice9::UpdateTexture

Für Fragen zu Grafik APIs wie DirectX und OpenGL sowie Shaderprogrammierung.
Antworten
anonym
Beiträge: 79
Registriert: 15.07.2009, 07:35
Kontaktdaten:

IDirect3DDevice9::UpdateTexture

Beitrag von anonym »

Irgendwie verstehe ich das nicht (IDirect3DDevice9::UpdateTexture):
The source texture must be in system memory (D3DPOOL_SYSTEMMEM).
D3DPOOL hat geschrieben:Sinngemäß aus Tabelle: D3DPOOL_SYSTEMMEM und D3DUSAGE_AUTOGENMIPMAP schließen einander aus
Here are the possibilities for source and destination surface combinations:
If pSourceTexture is a non-autogenerated mipmap and pDestinationTexture is an autogenerated mipmap, only the topmost matching level is updated, and the destination sublevels are regenerated. All other source sublevels are ignored.
If both pSourceTexture and pDestinationTexture are autogenerated mipmaps, only the topmost matching level is updated. The sublevels from the source are ignored and the destination sublevels are regenerated.
If pSourceTexture is an autogenerated mipmap and pDestinationTexture a non-autogenerated mipmap, UpdateTexture will fail.
Ist mit "autogenerated mipmap" etwas anderes als das Usageflag gemeint (bisher dachte ich, dieses Flag wäre hierfür notwendig) oder sehe ich den Wald vor lauter Bäumen nicht mehr? Bisher habe ich unter D3D9 immer D3DX fürs erstellen von Texturen verwendet. Ich habe alle Kombinationen durchprobiert, alleine die oben nicht angegebene (non-autogen/non-autogen) spuckt einen positiven Rückgabewert aus und PIX zeigt das auch erste Miplevel der Zieltextur korrekt an.
Benutzeravatar
dot
Establishment
Beiträge: 1734
Registriert: 06.03.2004, 18:10
Echter Name: Michael Kenzel
Kontaktdaten:

Re: IDirect3DDevice9::UpdateTexture

Beitrag von dot »

Die Grafikkarte kann direkt Mipmaps für Texturen generieren. Allerdings nur für Texturen, die im Videospeicher liegen. Wenn du eine Textur mit D3DXCreateTextureFromFileEx() lädst, dann werden die Mipmaps auf der CPU berechnet. Das hat rein gar nichts mit dem Flag zu tun und ist auch gut so. D3DUSAGE_AUTOGENMIPMAP wäre z.B. sinnvoll für dynamische Texturen oder Rendertargets. Das "autogenerated mipmap" in dem Text da oben bezieht sich immer auf das Flag.
anonym
Beiträge: 79
Registriert: 15.07.2009, 07:35
Kontaktdaten:

Re: IDirect3DDevice9::UpdateTexture

Beitrag von anonym »

Danke. Aber obwohl die Quelltextur immer im Systemspeicher liegt und für diese das Mipmap-Autogen-Feature nicht verfügbar ist, verweist die Dokumentation an zwei Stellen im Kontext von UpdateTexture auf Mipmapautogen.-Quelltexturen im Systemspeicher ("If pSourceTexture [die in D3DPOOL_SYSTEMMEM] is an autogenerated mipmap"/"both pSourceTexture and pDestinationTexture are autogenerated mipmaps" (UpdateTexture) sowie "Calling UpdateTexture is illegal when the source is an automatically generated mipmap, but the destination is not. [...] Similarly, when both the source and destination are automatically generated, only the topmost matching level is updated" (Automatic Generation of Mipmaps)).
Antworten