OpenGL Diskussion und Hilfe-Foren

Toon Shader mit Textur. Kann diese optimiert werden?

Ich bin ganz neu in OpenGL, hat ich nach langen Versuch und Irrtum verwalten Nehe des Cel-Shading-Rendering mit meinem Modell Lader zu integrieren, und haben sie gezogen, um die Toon Schatten und Umrisse und ihre ursprüngliche Textur zur gleichen Zeit verwenden. Das Ergebnis ist eigentlich ein sehr schöner Cel Shading Effekt der Modells Textur, aber es wird die Geschwindigkeit des Programms havling, es ist ziemlich sehr langsam auch mit nur drei Modellen auf dem Bildschirm.

Sowohl MD2 und 3DS loader haben eine InitToon () Funktion bei der Erstellung aufgerufen den Shader zu laden


Dies ist die Zeichnung für das animierte MD2 Modell:

Während dies ist die drawToon Funktion in dem 3DS-loader


Schließlich ist dies die tex.Use () Funktion, die eine BMP Textur lädt und bekommt irgendwie perfekt mit dem Toon Shading gemischt

Re: Toon Shader mit Textur. Kann diese optimiert werden?

Wie würde ich mich über diese Ecken an den Vertex-Shader zu senden, wie Sie gesagt haben?

Re: Toon Shader mit Textur. Kann diese optimiert werden?

Hier ist ein weiterer Versuch, das man verwendet ein dynamisches Array statt drei std :: Vektoren verschachtelt. Bessere Leistung von 15FPS zu 25FPS jetzt mit ein paar Modelle auf dem Bildschirm. Dies ist die neue, einschließlich dem Cel-Shading-Code. so optimiert ist dies, wie ich ohne Vertexshader bekommen?


Nochmals vielen Dank für Ihre Anregungen

Re: Toon Shader mit Textur. Kann diese optimiert werden?

Wie Alphonse sagen, es ist sicherlich besser, die Mischung Berechnung in den Vertex-Shader zu machen.

Und wenn Sie Modelle sind relativ smalls, denke ich, dass sie in die gleichen Vertex-Array-Gruppe, statt einen glEnableClientState / gl * Zeiger / glDisableClientState Zyklus für jeden von ihnen zu machen, kann einen großen Einfluss auf Leistungen haben.

Und nur die glEnable machen / glHint / glBlendFunc / glCullFace / glDepthFunc und andere glBindTexture ruft bei der Initialisierung, vgl nicht exactely die gleiche Sache für jedes Objekt zu machen, da sie immer die gleichen „Konstanten“ Zustände verwenden
(Ich sehe, dass Sie zwei Pässe verwenden, so haben Sie eine andere Initialisierung für jeden Durchlauf zu verwenden, aber wo jeder Durchlauf Anzeige alls Modelle von Kursen)