Ich habe eine Kachel-basierte Engine geschrieben - alles sieht gut aus, solange Antialiasing in WebGL deaktiviert ist.Deaktivieren Sie Antialiasing in WebGL für bestimmte Geometrie
Wenn Antialiasing aktiviert ist, werden manchmal Pixel am Rand von Kacheln gerendert, die meistens als Hintergrundpixel angezeigt werden und den Tiefenpuffer entsprechend ausfüllen. Wenn ein viel intensiveres (höheres Alpha) Pixel hereinkommt, wird es aufgrund des Tiefenpuffers verworfen.
Ich habe versucht, den Tiefenpuffer zu deaktivieren, und "die Mischfaktoren zu GL_SRC_ALPHA_SATURATE (Quelle) und GL_ONE (Ziel)" wie hier dokumentiert: http://www.glprogramming.com/red/chapter06.html. Dies führt dazu, dass rein weiße Pixel gezeichnet werden - nicht sicher, was dort vor sich geht.
Die Grafiken auf meinen Texturen sind alle aufgefüllt, so dass WebGL keine Probleme mit der Filterung haben sollte. Ich habe die Polsterung extrem gemacht, um sicherzustellen, dass dies nicht dazu beigetragen hat.
Ich habe glSampleCoverage()
erkundet und versuchte ein paar Schüsse im Dunkeln mit zufälligen Werten, nichts Wertvolles zu produzieren. Ich bin nicht vertraut mit dem, was es tatsächlich tut und kann keine guten Beispiele online finden, außer ein paar abstrakten Vorschlägen.
Ich würde lieber den Tiefenpuffer nicht deaktivieren.
GL_MULTISAMPLE
ist nicht verfügbar.
Ich habe ein Emscript mit C++ - Umgebung - aber das ist egal, ich kann inline Javascript schreiben, wenn nötig - aber ich denke, es gibt generische OpenGL-Lösungen zu diesem.
Gibt es eine Möglichkeit, Antialiasing in WebGL nur für bestimmte Geometrie zu deaktivieren?
Gut:
Bad:
Dies ist wahrscheinlich nicht die Antwort, die Sie suchen, aber ich laufe vor kurzem in ein ähnliches Problem, mich und ich frage mich, ob Sie bei der Lösung es keine Fortschritte gemacht haben? –
@ WacławJasper Meine aktuelle Lösung bestand darin, leider Antialiasing ganz zu deaktivieren. –