Speichern von Vertexzuständen mit einem StateBlock (Direct3D 9)
Ein Zustandsblock kann verwendet werden, um nur den Vertexzustand zu erfassen (siehe Statusblöcke Speichern und Wiederherstellen des Zustands (Direct3D 9)). Der folgende Status ist der Vertexzustand:
- Vertex-Renderzustand (siehe Vertexpipeline: Renderzustand).
- Vertex-Samplerzustand (siehe Vertexpipeline: Samplerstatus).
- Vertextexturzustand (siehe Vertexpipeline: Texturzustand).
- Die Segmente des NPatch-Modus aus IDirect3DDevice9::SetNPatchMode.
- Jede Leuchte von IDirect3DDevice9::SetLight sowie die Angabe, ob das Licht mit IDirect3DDevice9::LightEnable aktiviert ist oder nicht.
- Der aktuelle Vertex-Shader und jede der Vertexshaderkonstanten.
- Speichern Sie für jeden Vertexstream den Dividierungswert aus IDirect3DDevice9::SetStreamSourceFreq.
- Die aktuelle Vertexdeklaration.
Um den Vertexzustand mit einem Zustandsblock zu erfassen, geben Sie beim Aufrufen von IDirect3DDevice9::CreateStateBlock D3DSBT_VERTEXSTATE an.
Vertexpipeline: Renderzustand
Geräterenderungszustände wirken sich auf das Verhalten fast aller Teile der Pipeline aus. Renderzustände werden durch Aufrufen von IDirect3DDevice9::SetRenderState festgelegt.
Die folgende Tabelle enthält alle Renderzustände, die den Vertexzustand einrichten:
Renderstatus | Standardwert |
---|---|
D3DRS_CULLMODE | D3DCULL_CCW |
D3DRS_FOGCOLOR | 0 |
D3DRS_FOGTABLEMODE | D3DFOG_NONE |
D3DRS_FOGSTART | 0 |
D3DRS_FOGEND | 1 |
D3DRS_FOGDENSITY | 1 |
D3DRS_RANGEFOGENABLE | FALSE |
D3DRS_AMBIENT | 0 |
D3DRS_COLORVERTEX | TRUE |
D3DRS_FOGVERTEXMODE | D3DFOG_NONE |
D3DRS_CLIPPING | TRUE |
D3DRS_LIGHTING | TRUE |
D3DRS_LOCALVIEWER | TRUE |
D3DRS_EMISSIVEMATERIALSOURCE | D3DMCS_MATERIAL |
D3DRS_AMBIENTMATERIALSOURCE | D3DMCS_MATERIAL |
D3DRS_DIFFUSEMATERIALSOURCE | D3DMCS_COLOR1 |
D3DRS_SPECULARMATERIALSOURCE | D3DMCS_COLOR2 |
D3DRS_VERTEXBLEND | D3DVBF_DISABLE |
D3DRS_CLIPPLANEENABLE | 0 |
D3DRS_POINTSIZE | Treiberabhängig |
D3DRS_POINTSIZE_MIN | 1 |
D3DRS_POINTSPRITEENABLE | FALSE |
D3DRS_POINTSCALEENABLE | FALSE |
D3DRS_POINTSCALE_A | 1 |
D3DRS_POINTSCALE_B | 0 |
D3DRS_POINTSCALE_C | 0 |
D3DRS_MULTISAMPLEANTIALIAS | TRUE |
D3DRS_MULTISAMPLEMASK | 0xffffffff |
D3DRS_PATCHEDGESTYLE | D3DPATCHEDGE_DISCRETE |
D3DRS_POINTSIZE_MAX | 1 |
D3DRS_INDEXEDVERTEXBLENDENABLE | FALSE |
D3DRS_TWEENFACTOR | 0 |
D3DRS_POSITIONDEGREE | D3DDEGREE_CUBIC |
D3DRS_NORMALDEGREE | D3DDEGREE_LINEAR |
D3DRS_MINTESSELLATIONLEVEL | 1 |
D3DRS_MAXTESSELLATIONLEVEL | 1 |
D3DRS_ADAPTIVETESS_X | 0 |
D3DRS_ADAPTIVETESS_Y | 0 |
D3DRS_ADAPTIVETESS_Z | 1 |
D3DRS_ADAPTIVETESS_W | 0 |
D3DRS_ENABLEADAPTIVETESSELLATION"/> | FALSE |
Vertexpipeline: Samplerstatus
Samplerzustände steuern samplingbezogene Themen wie Filtern, Kacheln und Texturkoordinaten-Adressmodi. Verwenden Sie IDirect3DDevice9::SetSamplerState , um den Samplerzustand einzurichten (einschließlich des in der tessellator-Einheit zum Beispiel für Verschiebungszuordnungen verwendeten Zustands). Die Samplerzustände wurden mit einem Präfix "D3DSAMP_" umbenannt, um die Erkennung von Kompilierzeitfehlern beim Portieren von DirectX 8 zu ermöglichen.
Die folgende Tabelle enthält alle Samplerzustände, die den Vertexstatus einrichten:
Samplerzustände | Standardwert |
---|---|
D3DSAMP_DMAPOFFSET | 256 |
Vertexpipeline: Texturzustand
Texturzustände steuern Texturmischungsvorgänge des Multitexturmixers. Verwenden Sie IDirect3DDevice9::SetTextureStageState , um Texturzustände einzurichten. Verwenden Sie IDirect3DDevice9::SetTexture , um einer Samplerphase eine Textur zuzuordnen.
Die folgende Tabelle enthält alle Texturzustände, die den Scheitelpunktzustand einrichten:
Texturzustände | Standardwert |
---|---|
D3DTSS_TEXCOORDINDEX | 0 |
D3DTSS_TEXTURETRANSFORMFLAGS | D3DTTFF_DISABLE |
D3DTSS_TEXCOORDINDEX ist ein fester Funktionsvertexverarbeitungszustand. Wenn ein programmierbarer Vertex-Shader verwendet wird, wird dieser Zustand ignoriert.
Zugehörige Themen