Du kannst doch einfach Bit Operationen nutzen um die einzelnen 8 Bit Integer zu erhalten.
Ehrlich gesagt frage ich mich aber, was du genau erreichen willst. Erzeugen großer Mengen im Geometry Shader wird normalerweise nicht unbedingt empfohlen. Hast du schon mal überlegt, ob du die Integer nicht ganz einfach in ein VBO packen kannst und dann im Vertex Shader verarbeiten? Mit Instancing besteht auch die Möglichkeit, ein Quad sehr oft mit verschiedenen Zeichen zu rendern.
Ich weiß nicht, was shl und shr sein. Ich meine <<, >>, &, | Erst die ersten 8 Bit ausschneiden. Dann 8 Bits nach rechts schieben und die nächsten 8 Bit ausschneiden. Und so weiter.
Ne, eigentlich ist der Geometry Shader nicht dafür gedacht. Er ist für kleine Änderungen an der Geometrie gedacht, nicht um unbegrenzt neu Dreiecke zu erzeugen. Das ist auch offensichtlich langsam, schließlich arbeitet der Geometry Shader seriell und nicht parallel.
Ich würde die Buchstabendaten in ein VBO packen und damit rendern. Im Prinzip genauso, bloß kann dann jeder Buchstabe/Vertex parallel verarbeitet werden.
Ansonsten kannst du es im Compute Shader oder auf der CPU probieren. Um ehrlich zu sein, glaube nicht nicht, dass die Grafikkarte zum Generieren der Textrenderingdaten prinzipiell so gut geeignet ist.
Das es keine Missverständnisse gibt, beschreibe ich meine Routine nochmals.
Bei InitScene: Zuerst wird eine Bitmap erzeugt, auf der alle Buchstaben vorhanden sind, nachher wird das Ganze in der Textur-Speicher kopiert. In einer Array werden dazu die Textur-Koordinaten der einzelnen Buchstaben gespeichert.
Beim Rendern: Dort kann ich einen String angeben, welcher jedes mal anders sein darf. Dazu habe ich ein Schleife, in der Rechtecke gerendert werden, je nach Anzahl Chars. Bei jedem Rechteck werden dann die Textur-Koordinaten, je nach Char mitgegeben. Z.B. beim 'A' Koordinate 65, beim 'B' 66 etc. .
Dazu wollte ich die Schleife zum rendern in den Geo-Shader packen. Aber so wie es aussieht, ist es besser, wen dies Aufgabe die CPU übernimmt.
Zitat:
Ne, eigentlich ist der Geometry Shader nicht dafür gedacht,
Wie machen es die Game-Hersteller bei komplexen Spielfiguren, werden dies alle von der CPU erzeugt ?
Registriert: Mo Sep 23, 2002 19:27 Beiträge: 5812
Programmiersprache: C++
mathias hat geschrieben:
Zitat:
Ne, eigentlich ist der Geometry Shader nicht dafür gedacht,
Wie machen es die Game-Hersteller bei komplexen Spielfiguren, werden dies alle von der CPU erzeugt ?
Bei solchen Projekten wird die Geometrie ja von den Künstlern erzeugt, nicht von den Entwicklern. Die Modelle kommen also fertig als 3D-Modell, werden dann mit Physik versehen. Das Skinning und das LOD macht dann die GPU, aber die erzeugt da keine Daten via GS oder so, es sei denn man nutzt wirklich Tesselation, aber damit erzeugt man dann ja i.d.R. nur Details.
Ansonsten sind Geometrie Shader auch noch zu aktuell um sie breitflächig einzusetzen.
Tesselation "erzeugt" halt auch nicht wirklich die Daten, sondern wendet nur weitere Details an, die zum Beispiel in Texturen gespeichert wurden.
Außer Mathias hat ganz besonders ausgefallene Ideen mit Text, für die durchschnittliche Anwendung ist ein erzeugen von texturierten Rechtecken auf der CPU nicht verkehrt. Das erlaubt mehr komplexere Features und ist potentiell sogar effizienter. Schließlich kann man viele Texte einmal vorbereiten und dann oft wiederverwenden. Geometry Shader ist für normales Text Rendering jedenfalls ziemlich wenig geeignet, denke ich.
Registriert: Mo Sep 23, 2002 19:27 Beiträge: 5812
Programmiersprache: C++
OpenglerF hat geschrieben:
Tesselation "erzeugt" halt auch nicht wirklich die Daten, sondern wendet nur weitere Details an, die zum Beispiel in Texturen gespeichert wurden.
Für die (nicht mehr vorhandene) fest verdrahtete Tesselation ja (z.B. ATIs Truform) ja, mit Geometry Shadern kann man da viel mehr machen, auch komplexe Geometrie erzeugen. Die existiert dann halt nur auf der GPU, aber damit ist viel mehr möglich als nur reine Tesselation
Geometry Shader Tesselation wird halt eben zum Beispiel nicht empfholen. Die Performance soll extrem schlecht sein. Deshalb hat man ja die ganzen Tesselation Shader eingeführt. Theoretisch würde das auch der Geometry Shader können, aber es ist nicht praktikabel.
So sieht das Eegebniss bis jetzt aus, siehe Anhang.
Zitat:
Deshalb hat man ja die ganzen Tesselation Shader eingeführt.
Ist das richtig, wen man einen Tesselations Shader verwendet, das dann auch ein Geo-Shader gebraucht wird ? Mit Google habe ich gesehen, das immer beide Shader verwendet werden.
Es gibt sogar einige Leute, die die Ansicht vertreten, dass der Geometry Shader möglicherweise entfernt werden könnte, weil er zwar alle Aufgaben theoretisch übernehmen kann, aber kein richtig.
EDIT: Satzbau
Zuletzt geändert von OpenglerF am Di Apr 07, 2015 23:20, insgesamt 1-mal geändert.
Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.