PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Constant Buffer, Effect Framework


Gast
2008-07-04, 01:15:24
Die D3D10 Dokumentation lässt mich momentan extrem im Stich. :(
Deshalb bräucht ich etwas Erklärungshilfe.

Ich binde den Constant Buffer mit VSSetConstantBuffers an die VS-Stufe der Pipeline. Was mir nicht ganz klar ist, ist das Mapping zwischen Shader und Programmquellcode. Ich vermute es hängt mit dem Argument "StartSlot" zusammen. Nun lässt einen die Doku im Dunkeln was damit überhaupt gemeint ist... Soll man nun die Buffer im Shaderquellcode abzählen? Das kann ich mir heutzutage echt nicht mehr vorstellen. Es muss doch eine Möglichkeit geben den Slot per String zu bekommen?

Dann zum Thema EffectFramework. Nach Durchlesen der Doku und eigenem Testen stellt das Ding immer noch für ein teilweise unverständliches Gebilde dar. :(

- Was ist die StateBlockMask? Da gibts ne Funktion zum Berechnen der Maske, aber was macht man damit? Muss man sich selbst drum kümmern, nimmt einem das Framework einem das ab?
- GetConstantBufferByName liefert mit einen Pointer auf einen Buffer zurück. Was soll ich damit? Den hab ich doch schon von der Generierung des Buffers? Oder initialisiert mir das Ding einen Buffer?
- SetConstant Buffer: da seh ich den Sinn grade garnicht. Ich ändere die Daten doch schon mit dem Buffer Interface. Warum soll ich den Buffer wieder zurück ans Effektframework schicken?


Wahrscheinlich sind die Fragen ganz einfach und steh ich nur aufm Schlauch. :usad:

Trotzdem schonmal Danke für Antworten

Demirug
2008-07-04, 07:55:17
Um heraus zu finden an welchen Slots die Constant buffers gebunden werden müssen kann D3D10ReflectShader benutzten. Dann mit ID3D10ShaderReflection::GetResourceBindingDesc über die Bindungen laufen. Der BindPoint in der D3D10_SHADER_INPUT_BIND_DESC ist der Slot für den Constant Buffer. Die Zuordnung erfolgt über Name.

Die StateBlockMask gibt an welche States der Pipeline der entsprechende Effekt verändert. In der Regel braucht man diese Information nicht aber wenn man den Effekt Framework mit anderen Methoden mischt kann es manchmal ganz nützlich sein zu wissen was ein Effekt verändert.

GetConstantBufferByName ist eine weitere Hilfsfunktion wenn man der Meinung ist das kopieren der Variablen in den ConstantBuffer selbst zu übernehmen und nicht die Parameter des Frameworks nutzen will.

SetConstantBuffer steigert das ganze noch um eine Stufe. Damit kann man den vom Framework erzeugten Buffer durch einen eigenen ersetzten.

Gast
2008-07-04, 11:06:36
...
Kurz und verständlich.
Danke :up: