2013-08-12 6 views
8

Ho cercato ovunque un modo per i bordi anti-alias di forme piene disegnate con ShapeRenderer (ad esempio ShapeType.Filled) ma non riesco a trovare nulla a riguardo.Forme piene di anti-aliasing in libgdx

Le linee funzionano bene con Gdx.gl.glEnable(GL10.GL_LINE_SMOOTH) ma nulla di ciò che ho provato funziona con forme piene. Quindi, qualcuno ha qualche suggerimento?

risposta

3

ho trovato il supporto anti-aliasing in OpenGL a mancare (come supporto reale dipende dal supporto hardware opzionale), in particolare per le primitive poligono di base. Esistono due soluzioni che ho trovato che funzionano:

In primo luogo, è possibile ottenere ragionevole multi-campionamento quando si utilizzano le trame. Quindi, magari renderizza il tuo poligono su un oggetto FrameBuffer, e poi copialo sullo schermo. Ci sono ancora un sacco di avvertimenti, vedi http://www.saschahlusiak.de/2012/10/opengl-antialiasing-in-android-with-transparent-textures/ per maggiori dettagli.

In secondo luogo, rendere la forma piena con uno shader che ha l'anti-alias, come in questa domanda: Drawing Antialiased circle using Shaders. Se la tua forma primitiva piena è complicata, questo può essere un bel po 'di lavoro. Vedi https://code.google.com/p/libgdx/wiki/OpenGLShader per come usare uno shader con Libgdx. Questa opzione funziona anche con OpenGL ES 2.0.

2

Hai provato a seguire i seguenti suggerimenti?

Gdx.gl.glEnable(GL10.GL_LINE_SMOOTH); 
Gdx.gl.glEnable(GL10.GL_POINT_SMOOTH); 
Gdx.gl.glHint(GL10.GL_POLYGON_SMOOTH_HINT, GL10.GL_NICEST); 
Gdx.gl.glHint(GL10.GL_POINT_SMOOTH_HINT, GL10.GL_NICEST); 
+1

Sfortunatamente, le costanti che hai citato non sembrano essere nell'ultima versione di libGDX. https://github.com/libgdx/libgdx/blob/master/gdx/src/com/badlogic/gdx/graphics/GL20.java – Travis

+0

Sì, sono disponibili solo se si utilizza OpenGL ES 1.0, non 2.0 – Wizche