Freigeben über


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:

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.

Zustandsblöcke Speichern und Wiederherstellen des Zustands