Wenn Sie einen Directx 10-Geometry-Shader-Fehler erhalten, ist dieses Tutorial hier, um Sie zu verbessern.
Genehmigt: Fortect
Der Geometry Shader ist die effektive Ergänzung zu den DX10-APIs, die Webentwicklern die Möglichkeit gibt, mithilfe von Grafikdesign-Hardware eine völlig neue Geometrie zu erstellen, die mit der Unterbrechung bestehender Geometrien verbunden ist, und ermöglicht komplexere Effekte wie Explosionen, lebensechte Verstärkungen, Zerlegung (neue Ergänzung). gekaufte Effekte hier :-)) und so. ohne das Hauptnetz neu zu starten.
Was passiert im Art der Geometrie-Shader-Stufe in DirectX?
Der Schritt Geometry Shader (GS) führt den angehängten Shader-Code vollständig aus, wobei die Vertices als Eingaben verwendet werden, um die in der Quellrolle erwähnte spezielle Vertex-Generierungsfähigkeit bereitzustellen.
Dieses Tutorial behandelt alle Grundlagen der Verwendung des in DX10 + verfügbaren Geometrie-Shader-Raums. Geometrische EbeneEs gilt als äußerst nützlich für Produkt-Sprites, Werbetafeln und Partikelsysteme. Dies ist eine beliebige erste Seite einer dreiteiligen Serie, die sich richtig auf Billboard-Geometrie-Shader und Blocking-Ansätze konzentriert.
Verwendung von SV _ rendertargetarrayindex In der Geometrie?
Der Index des Reflexionszielarrays. Gilt für die Ausgabe eines bestimmten Geometrie-Shaders und gibt das Kollektor-Slice an, das sich auf das Renderziel bezieht, auf dem der Pixel-Shader das Grundelement anzieht. SV_RenderTargetArrayIndex ist normalerweise nur aktuell, wenn das Renderziel als Sammlungsressource betrachtet wird.
Der Geometrie-Shader-Schritt wurde in Bezug auf DX10 eingeführt, und die Leute dachten zunächst, er sollte für Tessellationszwecke ständig nützlich sein (was wahrer sein sollte), aber nützlicher für Verwendung mit Partikelgemeinschaften und Sprite-Rendering. Der Geometrieschritt befindet sich in Kombination mit den Pixel-Shader-Schritten innerhalb des Vertex, und seine Hauptpraxis besteht darin, neue Primitive außerhalb davon zu schreiben.
Wie behebe ich das Problem? Fehler 193?
Zusammenfassend werden die Scheitelpunkte im Allgemeinen an den Vertex-Shader in einem Vertex-Puffer gesendet, der normalerweise in der GPU gespeichert ist. Ein Drag-and-Drop-Aufruf innerhalb der API sendet jede Art von Vertex-Shield an die Pipeline. Jeder Vertex geht zuerst direkt zu einem Vertex-Shader, wo sie bei Bedarf transformiert werden und die Vertex-Daten des Hundes (nach Bedarf) zugeschnitten werden. Nachdem die Vertices verarbeitet und von diesem Vertex-Shader zurückgegeben wurden, werden sie in der Stepprimitive-Konfiguration ihrer wertvollen API zu Primitiven zusammengefasst. Die Art des Primitivs, das ursprünglich ausgehend von Scheitelpunkten erstellt wurde, die die Spitze eines Hindernisses kreuzen, hängt von der angegebenen Topologie des Mittelalters ab (Punkte, Linien und Dreiecke). in Pixel), bevor sie mit ihrer Pixel-Shader-Ebene kommunizieren und schließlich auf dem Bildschirm gezeichnet werden.
Der Geometric Shader (GS) ist ein sehr guter zusätzlicher Shader-Articipant, der Vertex-Shader und Baugruppen-Primitive des oberen Teils oder einfach nur zusätzliche Pixel-Shader-Ebenen kombiniert, die von Vertices reichen (in einer Ebenenansicht). Primitive, die einige Vertex-Shader hinterlassen, treten in die mittelalterliche Build-Phase ein, sobald sie in eine bestimmte Screen-Hang-Phase übergehen (Abbildung 1a). Wenn GS vorhanden ist, werden Scheitelpunkte tatsächlich anfänglich vom Scheitelpunkt zum Shader-GS gesendet, bevor die Primitive-Assembly abgeschlossen ist. GS akzeptiert als Input ein wichtiges, ganz neues Primitiv, ein ganz junges; stellt die Anzahl von Vertices dar, die GS von einem Vertex-Shader empfängt, bestimmt durch den neuen Satz primitiver Topologie. Wenn unsere Topologie auf Punkten definiert werden soll, nimmt GS nur einen einzelnen Scheitelpunkt, gleichzeitig sollte inTime GS 2 oder 3 Scheitelpunkte für Linien und auch Dreiecke akzeptieren können. GS verwendet dann die mit den Eingabeprimitiven verbundenen Scheitelpunktdaten, um neue zu erzeugen, deren Scheitelpunkte genau die neuen Primitive bilden. Diese neu erfundenen Vertices werden vom GS als ein Strom von Vertices generiert und als Primitiv in der Build-Phase gesendet, bevor sie durch die Pipeline geleitet werden (Abbildung 1b). Somit nimmt GS das gesamte Primitive als Eingabe und erzeugt gleichermaßen ganze Primitive als eine Scheitelpunktliste.
Jetzt ist es nicht sehr interessant, Primitive standardmäßig zur Ausgabe an GS zu senden, aber da GS viele Primitive von einem einzelnen Primitiv ausgeben kann, wird es zu einem viel nützlicher. Dies bedeutet, dass wir weiterhin ein Dreieck im GS platzieren können, um 4 Dreiecke zu erstellen (das ist Ihre Basis, um eine grundlegende Tessellation mit einem definitiven Geometrie-Shader anzuziehen, siehe Abbildung 2). In GS gäbe es einfach keine Korrelation zwischen dem Eingabeprimitiv und dem Typ des Ausgabeprimitivs, also können Sie diese bestimmte Zeichenfolge einfach neben die Ausgabedreiecke setzen. Im Vorhergehenden p Im Tutorial untersuchen wir normalerweise mit For gs beim Rendern von Sprites, da dies normalerweise ein einfaches Beispiel ist, um die Vorteile von GS zu demonstrieren. Ein Sprite ist ein zweidimensionaler markanter Quad, der im aktuellen Bildschirmloch (nahtloser Clipspace) angezeigt wird, damit die Software immer auf den Bildschirm ausgerichtet ist. Sprites werden höchstwahrscheinlich beim Rendern von Spielen als Text, Cursor sowie als GUI verwendet.
Genehmigt: Fortect
Fortect ist das weltweit beliebteste und effektivste PC-Reparaturtool. Millionen von Menschen vertrauen darauf, dass ihre Systeme schnell, reibungslos und fehlerfrei laufen. Mit seiner einfachen Benutzeroberfläche und leistungsstarken Scan-Engine findet und behebt Fortect schnell eine breite Palette von Windows-Problemen - von Systeminstabilität und Sicherheitsproblemen bis hin zu Speicherverwaltung und Leistungsengpässen.
Lassen Sie uns also ein wenig über Sprites sprechen, bevor wir zum speziellen Geometrie-Shader übergehen. Erwähnt, weil jedes Sprite ein texturiertes Quad ist. Sprites unterschiedlicher Größe sowie Positionen werden normalerweise durch spezifische Sets gesteuert, die auf Werte, Ankerpunktposition und Sprite-Dimensionen zeigen. Die Idee eines Ankers ist ein Punkt, der auf einem Sprite verfügbar ist, der wiederum für Sie verwendet wird, um ihn zu positionieren, und eine bestimmte Größe bezieht sich auf die Größe und Größe des Sprites. Der am häufigsten verwendete Ankerpunkt für Sprites ist auch der obere linke Scheitelpunkt, beispielsweise ein Viereck (siehe Abbildung 3a). Daher brauchen wir Menschen für ihre einfachsten Spwrists zwei Wertesätze, sowie Render-Sprites im Bildschirmraum, diese Meinungen sind zweidimensional (x, y) und laufen in p. Wenn wir zum Beispiel ein Banner mit einer Größe von 200 × 100 Pixeln in die Mitte unseres Satzes von 768 × 768 haben möchten. Der Schraubpunkt beträgt 412 p, bei 0 Pixel Breite und Höhe beträgt diese Methode 200 Pixel oder 100 Pixel. Die meisten Sprites erzeugen normalerweise zusätzliche Eigenschaften wie normalerweise die Deckkraftmarkierung in a- und z-Dominanz (Pseudotiefenwert). Auf diese Weise kann das Grundprogramm des Sprites definiert werden, wie in Abbildung 3b aufgedeckt. Das sollten Sie jetzt bedenken, denn wie Sie sich erinnern, habe ich gesagt, dass Ihre Sprites so positioniert sind, dass sie Pixelwerte implementieren, sie befinden sich tatsächlich im Clip-Raum), aber darüber werden wir später sprechen. Denken Sie vorerst daran, dass die endgültigen Koordinaten, die normalerweise an die Pipeline gesendet werden, für den Standard-Clip-Platz erforderlich sind. Also
Wie implementiere ich Fehler? 193 %1 ist keine gültige Win32-Anwendung?
Okay, motivieren wir uns heute, diese Struktur zurückzubringen. Normalerweise werden wir auf jeden Fall wahrscheinlich zwei Dreiecke brauchen, um ein bestimmtes Viereck a zu bilden. Auch hier gilt, dass wir die vierten Eckpunkte zu jedem Sprite rendern müssen. Jeder Scheitelpunkt enthält die Position zum 2D-Clipping-Raum; 2. Die wichtigsten Texturkoordinaten und Sprite-Eigenschaften wie Opazität und Z-Reihenfolge. Unter der Annahme, dass Gleitkommazahlen implementiert sind, wird jeder Vertex mit ziemlicher Sicherheit 26 Bytes Speicher belegen, und jedes einzelne Sprite benötigt 96 Bytes Speicher. Die durchschnittliche GUI wird also viele Sprites haben, aber sagen wir, eine durchschnittliche GUI verwendet 100 Sprites. Dadurch kann jeder Frame der GUI 9.375 KB beanspruchen, um die GPU mehrfach vom Prozessor produzieren zu können. Die Datenübertragung auf dem PCIE-Bus ist ehrlich gesagt langsam, so dass eine langsamere Datenmenge, die vom Framework transportiert wird, zur Verbesserung der Leistung beiträgt. Natürlich ist 9KB nicht vertrauenswürdig, aber bedenken Sie die Tatsache, dass Experten behaupten, dass systemParticles im Allgemeinen mit Symbolen (die wie Sprites sind, wo sie nur texturierte Quads sind) und Quads gerendert werden. „Dafür kann ein Compound-Emitter verantwortlich sein. ein paar können tausend Teilchen sein. Unter Umständen summieren sich die Lagerkosten. Außerdem sollten Sie verstehen, dass es viel Geld kostet, Bearbeitungspunkte im Frame für jedes Sprite auf dem Prozessor zu erstellen.
Jetzt, da wir wissen, dass jeder einige neue Primitive aus den üblicherweise in GS gefundenen Arten wachsen lassen kann, können wir diese zu Ihrem Vorteil nutzen und das Rechteck innerhalb weniger GS-Grenzen machen. Im Idealfall würden wir jetzt zum Beispiel unsere Sprite-Struktur direkt an GS senden und die Doppeldreiecke rendern. Nun, Sie sind sich sicher, dass wir es schaffen! Scheitelpunkte müssen Strukturen sein, daher werden wir für jede Sprite-Struktur einen Scheitelpunkt entwickeln, der mit Sicherheit mit allen erforderlichen Sprite-Dokumenten gefüllt wird. Welche Verwendung der Datenübertragung sollten wir auf einige GS umstellen? Nun, nur die Wirbelsäulenkomponente, die Abmessungen und alle Eigenschaften des jeweiligen Sprites. Texturkoordinaten mGS können berechnet werden, wie sie tatsächlich später veröffentlicht werden. Unsere Sprites sollten nun durchaus 24 Byte groß sein (75% Reduzierung !!).
Aber wie bringen Sie die Methodenscheitelpunkte wieder in die Pipeline, damit GS am besten Daten aus einem einmaligen Sprite holt? Welches Primitiv auf der Erde verwendet also hauptsächlich einen Scheitelpunkt? Punkt. Wenn wir eine absolute Scheitelpunktlast mit Sprite-Daten erstellen und diese als Punktrepräsentant an die Pipeline senden
Beschleunigen Sie jetzt die Leistung Ihres Computers mit diesem einfachen Download.