Texture Artefakte im Alpha-Bereich
Verfasst: 07.11.2012, 10:52
Ich habe auf Eure Anregungen hin meinen SpriteBatcher (http://zfxce.zfx.info/viewtopic.php?f=5 ... 318#p34318), so angepasst, das dieser nun Sprites mit unterschiedlicher Texturreferenz batchen kann. Beim Batcher handelt es sich um ein VBO, dass solange die Geometriedaten batched, bis ein Sprite mit neuer Textur hinzugefügt wird. In diesem Fall wird erst der gesamte Inhalt des VBO zusammen mit der im zugeordneten aktiven Textur gerendert und anschließend die Texturreferenz auf die neue gesetzt und alle vorhandenen Geometriedaten gelöscht (Bei jedem Render Call führe ich explizit ein Bind/Unbind der aktiven Textur durch).
Das ganze funktioniert hervorragend, solange ich immer nur ein Sprite pro Textur erzeuge. Füge ich weitere Sprites hinzu, die gebatched werden, dann erhalte ich Texturartefakte, und zwar nur in den hinzugefügten Sprites. Hier wird im Alphabereich der Textur Content der Texturen der anderen Sprites mit gerendert:
http://s7.directupload.net/file/d/3066/5bdmiwxo_jpg.htm
Das oben angefügte Beispiel Zeigt, wie ich ein Regal, ein Ritter und ein Fass render (Back to Front). Alles sauber, alles bestens. Füge ich jetzt ein weiteres Fass hinzu, egal wo, dann habe ich nur für dieses hinzugefügte Fass die beschriebenen Artefakte, die ich mir nicht erklären kann. Um den ganzen noch einen oben drauf zu setzen habe ich noch mal ein Regal hinzugefügt da, und siehe da, ich erhalte nun nur für dieses Regal die Artefakte, die restlichen Sprites werden korrekt gerendert, auch die Fässer.
Zunächst Dachte ich, es könnte am Tiefenbuffer liegen und habe mit glDepthMask und glDisable(GL_DEPTH_TEST) diesen deaktiviert. Dies bringt jedoch keine Änderung.
Hat jemand eine Idee wo diese Artefakte her kommen können? Ich kann mir das aktuell nicht erklären.
Das ganze funktioniert hervorragend, solange ich immer nur ein Sprite pro Textur erzeuge. Füge ich weitere Sprites hinzu, die gebatched werden, dann erhalte ich Texturartefakte, und zwar nur in den hinzugefügten Sprites. Hier wird im Alphabereich der Textur Content der Texturen der anderen Sprites mit gerendert:
http://s7.directupload.net/file/d/3066/5bdmiwxo_jpg.htm
Das oben angefügte Beispiel Zeigt, wie ich ein Regal, ein Ritter und ein Fass render (Back to Front). Alles sauber, alles bestens. Füge ich jetzt ein weiteres Fass hinzu, egal wo, dann habe ich nur für dieses hinzugefügte Fass die beschriebenen Artefakte, die ich mir nicht erklären kann. Um den ganzen noch einen oben drauf zu setzen habe ich noch mal ein Regal hinzugefügt da, und siehe da, ich erhalte nun nur für dieses Regal die Artefakte, die restlichen Sprites werden korrekt gerendert, auch die Fässer.
Zunächst Dachte ich, es könnte am Tiefenbuffer liegen und habe mit glDepthMask und glDisable(GL_DEPTH_TEST) diesen deaktiviert. Dies bringt jedoch keine Änderung.
Hat jemand eine Idee wo diese Artefakte her kommen können? Ich kann mir das aktuell nicht erklären.