Ich würde die Verwendung von Texturen sehr empfehlen, wie Dave sagte. Es mag etwas schmerzhaft sein, aber es würde meiner Meinung nach eine viel bessere Leistung bringen.
Sie könnten versuchen, nach Kantenerkennungsalgorithmen zu suchen . Wenn Sie Ihre Netze mit Scheitelpunktfarben mit Volltonfarben und mittleren Alphawerten (für leichte Transparenz) erstellen und dann einen Kantenerkennungsshader verwenden, sieht dies möglicherweise gut genug aus. Es wäre nicht ganz dasselbe, aber es könnte dir noch mehr gefallen; oder vielleicht nicht.
Andernfalls suchen Sie möglicherweise nach einer Lösung mit zwei Durchgängen , indem Sie durchscheinende Polygone zeichnen (setzen Sie die Scheitelpunktfarben erneut auf eine durchgehende Farbe mit einem mittleren Alpha-Wert), dann glPolygonMode (GL_LINE) und glLineWidth wie gewünscht anpassen (möglicherweise basierend auf dem Objekt) Abstand) und zeichnen Sie die Polygone erneut.
Es ist ein bisschen spät und ich habe Mühe, das durchzulesen , aber eine Forumsdiskussion verweist auf dieses PDF: Single-Pass-Wireframe-Rendering . Ich entschuldige mich, wenn es nicht relevant ist.
Ich weiß, es ist wahrscheinlich nicht das, wonach Sie suchen, aber es sieht so aus, als ob Vector Tanks nur strukturierte Modelle verwendet. Die Textur verleiht dem Drahtrahmen das Aussehen, es läuft auf meinem iPod touch, der Shader nicht unterstützt.
quelle
Ich habe es nur mit hochauflösenden, meist schwarzen Texturen gesehen, wie sie in Tron 2.0 enthalten sind. Ihre Texturen sind fast universell entweder ein flaches Schwarz mit einem dicken, farbigen Rand oder eine einfache Perlin-Noise-Textur.
Sie führten eine einfache Nachbearbeitung durch , um den Glow-Effekt zu erzielen.
quelle
Sie können eine einfache Distanzfunktion im Pixel-Shader ausprobieren. Vielleicht so etwas wie baryzentrische Koordinaten (speichern Sie verschiedene RGB-Werte an den Scheitelpunkten und der Rasterer erledigt den größten Teil der Arbeit für Sie).
Dann hat Ihr Pixel-Shader die Informationen, die er benötigt, um festzustellen, wo auf einem Polygon sich das aktuelle Pixel befindet - in der Nähe eines Scheitelpunkts, in der Nähe einer Kante oder in der Mitte ...
Ich vermute, dass es in der Praxis einfacher wäre, es zu texturieren.
quelle
Wie wäre es damit: Nehmen Sie Ihr Modell und fasen Sie die Kanten ab, die als Konturen angezeigt werden sollen. Färben Sie die Gesichter, die erstellt wurden, mit einem hellen undurchsichtigen Grün, während alle alten Gesichter ein dunkles, durchscheinendes Grün haben.
Dies erfordert überhaupt keine Verwendung von Pixel-Shadern. (Tatsächlich auch keine Texturen, nur Gesichtsfarben.) Es ist eine gewisse Modellvorverarbeitung von Ihrer Seite erforderlich, die möglicherweise ein Problem darstellt oder nicht.
Sie können den Umriss nicht sehen, wenn die abgeschrägte Oberfläche senkrecht zur Ansicht ist. Wenn Sie das stört, können Sie die abgeschrägte Oberfläche etwas herausdrücken und die Extrusion so färben, als hätten Sie die Abschrägung. Sie können mit verschiedenen Abschrägungs- und Extrusionsgraden herumspielen, um dünnere und dickere Linien zu erzeugen.
quelle