Freigeben über


Überlegungen zur Leistung (Direct3D 10)

Verwenden von Effektpools

Es ist üblich, dass Pipelines gerendert werden, um viele Shader zum Rendern verschiedener Objekttypen und Spezialeffekte zu verwenden. Der Shader ist eine Mischung aus Zuständen, die von allen Shadern wie einer Weltmatrix oder einer Lichtposition und einem anderen Zustand verwendet werden, der für jeden Shader spezifisch ist, z. B. die diffuse Farbe eines Objekts oder glanzliche Hervorhebungsberechnung. Ein Effektpool ist ein Ort im Arbeitsspeicher zum Speichern des Zustands, der für viele Shader verwendet wird, sowie allgemeine Geräteobjekte wie Shader, Renderzustandsobjekte und Konstantenpuffer. Die Leistungsverbesserung führt dazu, dass der gemeinsame Zustand einmal für alle Shader aktualisiert wird, die diesen Zustand benötigen.

Ein Effektpool ist ein gemeinsam genutzter Speicherspeicherort für den Effektstatus. Ein Pool wird ähnlich wie ein Effekt erstellt; sie kann aus dem Arbeitsspeicher (oder einer Datei oder Ressource) erstellt werden. Dies führt zu zwei verschiedenen Arten von Effekten: ein globaler Effekt, der nicht vom Zustand in anderen Effekten abhängt, im Gegensatz zu einem untergeordneten Effekt, der vom Zustand in einem anderen Effekt abhängt.

Sie geben an, ob es sich bei einem Effekt um einen globalen Effekt (Standardfall) oder um einen untergeordneten Effekt (durch Angabe des D3D10_EFFECT_COMPILE_CHILD_EFFECT-Flags) handelt, wenn der Effekt erstellt wird. Ein globaler Effekt kann als Effektpool dienen; Ein untergeordneter Effekt kann kein Effektpool sein.

Rendern eines Effekts

Effects (Direct3D 10)