D3DRS_ZENABLE
D3DRS_ZENABLE beschreibt den Zustand des Z (Tiefen-) Buffers. Dieser Typ gehört zum D3DZBUFFERTYPE Aufzählungstyp.
Wenn das Flag den Zustand D3DZB_TRUE hat so wird der Z Buffer verwendet. Sollte D3DZB_USEW gesetzt sein so wird der W Buffer
aktiviert. Um Z-buffering zu vermeiden muss D3DZB_FALSE gesetzt werden.
Der vorgegebene Wert für D3DRS_ZENABLE ist D3DZB_TRUE wenn ein Tiefenbuffer im Zusammenhang mit EnableAutoDepthStencil erzeugt wurde. Andernfalls ist der Default Wert D3DZB_FALSE.
D3DRS_FILLMODE
Die Flags gehören zum D3DFILLMODE Aufzählungstyp. Der vorgegebene Wert ist D3DFILL_SOLID
D3DRS_SHADEMODE
Die Flags gehören zum D3DSHADEMODE Aufzählungstyp. Der vorgegebene Wert ist D3DSHADE_GOURAUD
D3DRS_LINEPATTERN
Die Flags gehören zum D3DLINEPATTERN Record. Der vorgegebene Werte ist 0 für wRepeatPattern,und 0 für wLinePattern
D3DRS_ZWRITEENABLE
Diese Flag gibt an ob die Anwendung in den Tiefenbuffer schreiben soll. Der Standardwert ist TRUE. Dieses Flag erlaubt somit der Anwendung das System daran zu hindern den Tiefenbuffer zu erneuern und mit neuen Werten zu füllen. Wenn dieses Flag FALSE gesetzt ist wird der Tiefenbuffer gemäß D3DRS_ZFUNC behandelt.
D3DRS_ALPHATESTENABLE
TRUE aktiviert den Alphatest. Der Standardwert ist FALSE. Der Alphatest akzeptiert oder verwirft Pixel in Abhängigkeit ihres Alphawertes. Die ankommenden Alphawerte werden mit dem Referenzwert verglichen. Zum Vergleichen wird das D3DRS_ALPHAFUNC Flag benutzt.
Wenn diese Flag TRUE gesetzt wird, wird Alphablending nur ausgeführt wenn der Vergleich erfolgreich war.
D3DRS_LASTPIXEL
FALSE um das Zeichnen des letzten Pixels eines Dreiecks oder einer Line zu ermöglichen. Der Standardwert ist TRUE.
D3DRS_SRCBLEND
Die Flags gehören zum D3DBLEND Aufzählungstyp. Der Standardwert ist D3DBLEND_ONE.
D3DRS_DESTBLEND
Die Flags gehören zum D3DBLEND Aufzählungstyp.Der Standardwert ist D3DBLEND_ZERO.
D3DRS_CULLMODE
Dieses Flag gibt an, welche Seite der Dreiecke nicht gerendert werden soll. Der Wert gehört zum D3DCULL Aufzählungstyp. Der Standardwert ist D3DCULL_CCW.
D3DRS_ZFUNC
Die Flags gehören zum D3DCMPFUNC Aufzählungstyp. Der Standardwert ist D3DLESSEQUAL. Diese Flags ermöglichen einer Anwendung das Aktzeptieren oder Verwerfen von Pixeln in Abhänigkeit des Abstandes zur Kamera.
Der Tiefenwert des Pixels wird mit dem Tiefenwert des Tiefenbuffers verglichen. Wenn die Tiefe des Pixels geringer ist als der Tiefenbuffer-Wert dann wird das Pixel gezeichnet.
Software-Rasterizer und viele Hardwarebeschleuniger arbeiten schneller, wenn der Tiefentest fehlschlägt, da es keiner Filter und keine Abstimmung der Textur bedarf. Wenn das Pixel nicht gezeichnet wird, dann wird die Textur nicht gerendert.
D3DRS_ALPHAREF
Der Wert gibt den Alphawert an, welcher zum Vergleich benötigt wird, wenn D3DRS_ALPHATESTENABLE aktiviert ist. Der Wert beinhaltet einen 8-Bit Wert der sich in einem Low Wert eines Word befindet. Der Wert kann einen Bereich von $00000000 bis $000000FF haben.
D3DRS_ALPHAFUNC
Die Flags gehören zum D3DCMPFUNC Aufzählungstyp. Der Standardwert ist D3DCMP_ALWAYS. Diese Flag ermöglicht einer Anwendung das Akzeptieren oder Verwerfen von Pixeln in Abhängigkeit ihres Alphawertes.
D3DRS_DITHERENABLE
TRUE aktiviert Dithering. Standardwert ist FALSE.
D3DRS_ALPHABLENDENABLE
TRUE aktiviert die Alpha-Blended Transparenz. Standardwert ist FALSE.
D3DRS_FOGENABLE
TRUE aktiviert Fog Blending. Standardwert ist FALSE.
D3DRS_SPECULARENABLE
TRUE aktiviert Specular Highlights. Standardwert ist FALSE.
D3DRS_ZVISIBLE
Wird zur Zeit noch nicht unterstützt.
D3DRS_FOGCOLOR
Der Wert hierfür muss vom Typ TD3DCOLOR (LONGWORD) sein. Der Standardwert ist 0.
D3DRS_FOGTABLEMODE
Der Wert gibt die Art des Pixelnebel an. Dazu muss der zweite Parameter vom D3DFOGMODE Aufzählungstyp sein.
Der Standardwert ist D3DFOG_NONE.
D3DRS_FOGSTART
Die Tiefe, ab der der Nebeleffekt beginnen soll. Standard ist 0.0. Für Vertexnebel werden Welteinheiten übergeben, für Pixelnebel Anteilwerte (also zwischen 0.0 und 1.0) übergeben.
D3DRS_FOGEND
Die Tiefe, ab der der Nebeleffekt enden soll. Standard ist 1.0. Für Vertexnebel werden Welteinheiten übergeben, für Pixelnebel Anteilwerte (also zwischen 0.0 und 1.0) übergeben.
D3DRS_FOGDENSITY
Nebelintensität für Pixel- und Vertexnebel, der für die exponentialen Nebelmodi (D3DFOG_EXP und D3DFOG_EXP2) genutzt wird. Es sind nur Werte zwischen 0.0 und 1.0 gültig.Standardmässig ist 1.0 eingetragen.
D3DRS_EDGEANTIALIAS
TRUE, um die Linien, die das Objekt umgeben zu antialiasen. Der Standardwert ist FALSE. Wenn TRUE aktiviert ist, sollte die Anwendung nur die äussersten Linien eines Polygons rendern. Antialiasing wird durchgeführt, in dem Durchschnittswerte der benachbarten Pixel errechnet werden. Obwohl das nicht die beste Methode ist, kann Sie trotzdem sehr effizient sein. Es gibt immer mehr Hardware, die diese Technik unterstützen.
D3DRS_ZBIAS
Integerwert zwischen 0 und 16. Dieser Wert wird benutzt, um Polygone, die sich räumlich auf der gleichen Position befinden trotzdem zu unterscheiden. Wenn Sie zum Beispiel eine Mauer rendern und danach einen Schatten, kann es passieren, dass der Schatten nicht richtig dargestellt wird. Wenn Sie aber der Mauer und dem Schatten einen ZBIAS-Wert zu teilen, können Sie entscheiden, was in den Vordergrund, und was in den Hintergrund gerückt werden soll. Je höher die Zahl desto mehr im Vordergrund befindet sich das Objekt.
D3DRS_RANGEFOGENABLE
TRUE, um reichweitenbasierten Vertexnebel zu aktivieren. Der Standardwert ist FALSE, dann wird tiefenbasierter Nebel verwendet. Beim tiefenbasierten Nebel wird aus der Distanz vom Objekt zum Betrachter der Nebel errechnet, und nicht aus der Tiefe (also der Z-Koordinate). Die Reichweite (Range) ist eigentlich der korrekte Faktor um den Nebelfaktor zu bestimmen. Allerdings ist diese Technik sehr rechenintensiv. Daher benutzen die meisten die Tiefenangabe, da diese sofort zur Verfügung steht, und nicht erst berechnet werden muss. Tiefennebel hat allerdings den unerwünschten Effekt, dass sich beim Drehen der Kamera die Tiefe des Objektes verändert und diese deshalb aus dem Nebel hervorzutreten scheinen.
Da zur Zeit noch keine Hardware Per-Pixel tiefenbasierten Nebel unterstützt, wird die Reichweite zur Zeit nur für Vertexnebel angeboten.
D3DRS_STENCILENABLE
TRUE, um stenciling zu aktivieren oder FALSE um es zu deaktivieren. Der Standardwert ist FALSE.
D3DRS_STENCILFAIL
Schablonenoperation, die ausgeführt wird, wenn der Stenciltest fehlschlägt. Der zweite Parameter ist eine Konstante aus der D3DSTENCILOP-Aufzählung. Der Standardwert ist D3DSTENCILOP_KEEP.
D3DRS_STENCILZFAIL
Schablonenoperation, die ausgeführt wird, wenn der Stenciltest und der Tiefentest (z-test) fehlschlägt. Der zweite Parameter kann eine Konstante aus der D3DSTENCILOP Aufzählung sein. Der Standardwert ist D3DSTENCILOP_KEEP.
D3DRS_STENCILPASS
Schablonenoperation, die ausgeführt wird, wenn sowohl der Stencil, als auch der Tiefentest erfolgreich sind. Der zweite Parameter ist eine Konstante aus der D3DSTENCILOP Aufzählung. Der Standardwert ist D3DSTENCILOP_KEEP.
D3DRS_STENCILFUNC
Vergleichsfunktion für den Stenciltest. Dies kann eine Konstante aus der D3DCMPFUNC Aufzählung sein. Der Standardwert ist D3DCMP_ALWAYS.
Die Vergleichsfunktion wird dazu verwendet den referenzierten Wert mit den Stencilbufferwerten zu vergleichen. Diese Vergleiche beziehen sich nur auf die Werte, die in der Schablonenmaske definiert sind (die Schablone können Sie im Renderstate D3DRS_STENCILMASK setzen).
D3DRS_STENCILREF
Integerwert für den Referenzwert des Stenciltest. Der Standardwert ist 0.
D3DRS_STENCILMASK
Eine Maske die sich auf den Referenzwert und jeden Stencilbuffereintrag bezieht, um die entscheidenden Bits beim Stenciltest selektieren zu können. Der Standardwert ist 0xFFFFFFFF.
D3DRS_STENCILWRITEMASK
Schreibmaske, die sich auf die Werte bezieht, die in den Stencilbuffer geschrieben werden. Der Standardwert ist 0xFFFFFFFF.
D3DRS_TEXTUREFACTOR
Eine Farbe, die für das mehrfach Texturblending mit dem D3DTA_TFACTOR oder dem D3DTOP_BLENDFACTORALPHA Argument eingesetzt wird. Der Standardwert ist 0xFFFFFFFF.
D3DRS_WRAP0 through D3DRS_WRAP7
Textur-wrapping Verhalten für mehrere Texturkoordinantesets. Mögliche Werte für diesen Renderstate sind Kombinationen aus den Flags: D3DWRAPCOORD_0 (oder D3DWRAP_U), D3DWRAPCOORD_1 (oder D3DWRAP_V), D3DWRAPCOORD_2 (oder D3DWRAP_W), und D3DWRAPCOORD_3. Diese Flags bewirken, dass die Textur in die erste, zweite dritte und vierte Dimension gewrappt werden. Der Standardwert ist 0 (Wrapping ist für alle Richtungen ausgeschaltet).
D3DRS_CLIPPING
TRUE, um Clipping von DirectXGraphics einzuschalten, FALSE um es zu deaktivieren. Der Standardwert ist TRUE.
D3DRS_LIGHTING
TRUE, um DirectXGraphics Licht einzuschalten, FALSE um es auszuschalten. Der Standardwert ist TRUE. Nur Vertices, die eine Normale besitzen, werden korrekt beleuchtet. Vertices, die keine Normale haben, verwenden den Lichtwert 0 in allen Lichtberechnungen.
D3DRS_AMBIENT
Setzt das ambiente Licht. Der zweite Parameter ist ein Wert vom Typ D3DCOLOR, was LongWord entspricht.
D3DRS_FOGVERTEXMODE
Nebelformel, die für Vertexnebel verwendet werden soll. Verwenden Sie hierzu eine Konstante aus den D3DFOGMODE Aufzählungen. Der Standardwert ist D3DFOG_NONE.
D3DRS_COLORVERTEX
TRUE, um die Vertexfarben zu aktivieren, oder FALSE um Sie zu deaktivieren. Der Standardwert ist TRUE. Sind die Vertexfarben aktiviert, werden diese in die Beleuchtungsoperation mit eingebunden.
Mehr Informationen dazu gibt es bei den folgenden Renderstates:
D3DRS_DIFFUSEMATERIALSOURCE
D3DRS_SPECULARMATERIALSOURCE
D3DRS_AMBIENTMATERIALSOURCE
D3DRS_EMISSIVEMATERIALSOURCE
D3DRS_LOCALVIEWER
TRUE, um Kamerabezogene Glanzlichter (Specular Highlights) zu aktivieren, oder FALSE, um orthogonale Glanzlichter zu benuzten.
D3DRS_NORMALIZENORMALS
TRUE, um alle Vertices automatisch zu normalisieren, oder FALSE, um diese Funktion auszuschalten. Der Standardwert ist FALSE. Wenn diese Funktion aktiviert ist, werden alle Normalen nach dem Transformieren in den Kameraraum normalisiert, was sehr rechenintensiv sein kann.
D3DRS_DIFFUSEMATERIALSOURCE
Diffusefarbquelle für Lichtberechnungen. Gültige Werte sind Konstanten aus der D3DMATERIALCOLORSOURCE Aufzählung. Der Standardwert ist D3DMCS_COLOR1. Der Wert dieses Renderstates wird nur genutzt, wenn
D3DRS_COLORVERTEX auf TRUE gestellt ist.
D3DRS_SPECULARMATERIALSOURCE
Glanzlichtfarbquelle für Lichtberechnungen. Gültige Werte sind Konstanten aus der D3DMATERIALCOLORSOURCE-Aufzählung. Der Standardwert ist D3DMCS_COLOR2.
D3DRS_AMBIENTMATERIALSOURCE
Ambientfarbquelle für Lichtberechnungen. Gültige Werte sind Konstanten aus der D3DMATERIALCOLORSOURCE-Aufzählung. Der Standardwert ist D3DMCS_COLOR2.
D3DRS_EMISSIVEMATERIALSOURCE
Emissivfarbquelle für Lichtberechnungen. Gültige Werte sind Konstanten aus der D3DMATERIALCOLORSOURCE-Aufzählung. Der Standardwert ist D3DMCS_MATERIAL.
D3DRS_VERTEXBLEND
Anzahl der Matirzen, die zum geometrischen Blending genutzt werden sollen. Verwenden Sie als zweiten Parameter eine Konstante aus den D3DVERTEXBLENDFLAGS. Der Standardwert ist D3DVBF_DISABLE.
D3DRS_CLIPPLANEENABLE
Aktiviert oder deaktiviert benutzerdefinierte Clippingebenen. Erlaubt sind alle Werte vom Typ LongWord, bei dem jedes Bit dieses Wertes sich auf eine vom Benutzer definierte Ebene bezieht, die damit aktiviert oder deaktiviert wird. So bezieht sich das erste Bit (Bit 0) auf die Clipping-Ebene mit dem Index 0. Das nächste Bit bezieht sich auf die Clipping Ebene 1 usw.
Die D3DCLIPPLANEn Makros helfen dabei die Clippingebenen auf eine etwas bequemere Art und Weise zu definieren.
D3DRS_SOFTWAREVERTEXPROCESSING
TRUE oder FALSE, um zwischen Hard- oder Software-Vertexprocessing zu wählen. Für ein D3DDEVTYPE_SW Device ist dieser Wert unveränderbar TRUE. Bei D3DDEVTYPE_REF kann dieser Wert beliebig verändert werden. Wird ein Device mit D3DDEVTYPE_HAL genutzt, muss die Hardware Hardware-Vertexprocessing auch unterstützen, damit Sie dieses Feature nutzen können. Ansonsten ist dieser Wert auf TRUE festgestellt. Ist der Wert veränderbar, ist er zunächst auf FALSE. Verändern Sie diesen Wert zur Laufzeit, werden alle derzeitigen Streams, Indizes und Vertexshader auf ihren Standardwert nil oder 0 gestellt.
D3DRS_POINTSIZE
Ein Wert vom Typ Single, der die Grösse der Vertices angibt, wenn eine Punktgrösse im Vertexformat nicht definiert ist. Dieser Wert gilt in Bildschirmeinheiten, wenn D3DRS_POINTSCALEENABLE auf FALSE gesetzt ist. Ansonsten gilt der Wert in Welteinheiten. Der Standardwert ist 1.0. Es sind alle Werte grösser 0 erlaubt.
D3DRS_POINTSIZE_MIN
Ein Single-Wert der die minimale Grösse einer Punktprimitive angibt. Punktprimitiven werden auf diesen Wert verkleinert. Ist dieser Wert kleiner als 1.0 werden Punkte nicht gerendert, wenn sie sich nicht genau in der Pixelmitte befinden und Antialiasing ausgeschaltet ist, oder nur mit geringer Intensität gerendert, wenn Antialiasing aktiviert ist. Der Standardwert ist 0.0. Sie können alle Werte angeben, die grösser oder gleich 0.0 sind.
D3DRS_POINTSPRITEENABLE
Ein boolischer Wert. Wenn Sie TRUE angeben, erhält der Punkt Texturkoordinaten, so dass die gesamte Textur in jedem Punkt dargestellt wird. Bei FALSE wird nur die jeweilige Farbe des Punktes auf die gesamte Fläche übertragen.
D3DRS_POINTSCALEENABLE
Boolische Variabele, die sich auf die Grössenberechnung der Punktprimitiven auswirkt. Geben Sie TRUE an, wird die Grösse der Punkte von der Entfernung der Kamera zum Punkt abhängig gemacht. Geben Sie FALSE an, wird die definierte Punktgrösse als Bildschirmpixelgrösse interpretiert. Der Standardwert ist FALSE.
D3DRS_POINTSCALE_A
Singlewert mit dem Sie die Grösse der Punktprimitive abhängig von der Distanz beeinflussen können. Der Standardwert ist 1.0. Erlaubt sind alle Werte die grösser oder gleich 0.0 sind.
D3DRS_POINTSCALE_B
Singlewert mit dem Sie die Grösse der Punktprimitive abhängig von der Distanz beeinflussen können. Der Standardwert ist 0.0. Erlaubt sind alle Werte die grösser oder gleich 0.0 sind.
D3DRS_POINTSCALE_C
Singlewert mit dem Sie die Grösse der Punktprimitive abhängig von der Distanz beeinflussen können. Der Standardwert ist 0.0. Erlaubt sind alle Werte die grösser oder gleich 0.0 sind.
D3DRS_MULTISAMPLEANTIALIAS
Boolischer Wert, mit dem Sie entscheiden, wie einzelne Samples in einem Multisample-Rendertarget-Buffer berechnet werden sollen. Setzen Sie den zweiten Parameter auf TRUE, so werden mehrere Samples berechnet, so wird Fullscene-Antialiasing erreicht, in dem an verschiedenen Samplepositionen gerendert wird. Geben Sie FALSE an, werden mehrere Samples mit dem selben Samplewert in die Pixelmitte geschrieben. Dies erlaubt Nicht-Antialising im Multisample-Buffer. Dieser Renderstate hat keine Auswirkungen auf einen Singlesample-Buffer. Der Standardwert ist TRUE.
D3DRS_MULTISAMPLEMASK
Jedes Bit in dieser Maske, beginnend an LSB, kontrolliert die Veränderung eines Samples in einem Multisample-Rendertarget. Der Standardwert ist 0xffffffff.
D3DRS_PATCHEDGESTYLE
Hiermit bestimmen Sie, ob Patch-Kanten mit Float-Variablen gerundet werden sollen oder mit Integerwerten. Verwenden Sie hierzu eine Konstante aus der D3DPATCHEDGESTYLE Aufzählung. Der Standardwert ist D3DPATCHEDGE_DISCRETE.
D3DRS_PATCHSEGMENTS
Setzt die Anzahl der Segmente in Form eines Float-Wertes für jede Kante. Der Standardwert ist 1.0.
D3DRS_DEBUGMONITORTOKEN
Schaltet den Debugmonitor ein oder aus. Verwenden Sie hierfür eine der Konstanten aus der DEBUGMONITORTOKENS-Aufzählung. Der Standardwert ist D3DDMT_ENABLE.
D3DRS_POINTSIZE_MAX
Ein Single-Wert der die maximale Grösse einer Punktprimitive angibt. Punktprimitiven werden auf diesen Wert vergrössert. Der Wert muss grösser oder gleich sein als D3DRS_POINTSIZE_MIN. Der Standardwert ist 64.0.
D3DRS_INDEXEDVERTEXBLENDENABLE
Boolischer Wert, mit dem Sie Indexvertexblending aktivieren oder deaktivieren können. Der Standardwert ist FALSE.
D3DRS_COLORWRITEENABLE
Bei diesem Wert interessieren nur die ersten 4 Bits, die darüber entscheiden, ob der jeweilige Farbkanal zum rendern verwendet werden soll oder nicht. Der Clear-Befehl bleibt davon unberrührt. Der Standardwert ist 0x0000000f.
Mögliche Werte für diesen Renderstate sind D3DCOLORWRITEENABLE_ALPHA, D3DCOLORWRITEENABLE_BLUE, D3DCOLORWRITEENABLE_GREEN, und D3DCOLORWRITEENABLE_RED. Sie können beliebig miteinander kombiniert werden.
D3DRS_TWEENFACTOR
Singlewert mit dem Sie den Tweenfaktor bestimmen. Der Standardwert ist 0.0.
D3DRS_BLENDOP
Ein Wert mit dem Sie eine Rechenoperation bestimmen, die ausgeführt werden soll, wenn D3DRS_ALPHABLENDENABLE auf TRUE gesetzt wurde. Für den Wert können Sie eine Konstante aus der
D3DBLENDOP Aufzählung verwenden. Der Standardwert ist D3DBLENDOP_ADD.
D3DRS_POSITIONORDER
Ein Wert mit dem Sie die Interpolationsreihenfolge der Position für N-Patches bestimmen. Mögliche Werte sind D3DORDER_LINEAR oder D3DORDER_CUBIC. Der Standardwert ist D3DORDER_CUBIC.
D3DRS_NORMALORDER
Ein Wert mit dem Sie die Interpolationsreihenfolge der Normale für N-Patches bestimmen. Mögliche Werte sind D3DORDER_LINEAR oder D3DORDER_QUADRATIC. Der Standardwert ist D3DORDER_LINEAR.
D3DRS_FORCE_DWORD
Zwingt den Compiler dazu, die Konstanten als 32-Bit-Werte zu behandeln..
Anmerkungen
Bei einigen Renderstates sind als zweiten Parameter auch Single-Werte erlaubt. Da die Funktionsdefinition allerdings nur LongWort-Integerwerte zulässt, müssen Sie sich eines kleinen Tricks behelfen:
d3ddev8.SetRenderState( D3DRS_POINTSIZE, PDWord(@wert)^ ); |