2013-04-04 25 views
5

Usando OpenGL ES, sembra che ci siano due opzioni praticabili per rettangoli arrotondati:Best Practice per i rettangoli arrotondati in OpenGL ES

  1. disegnare manualmente la forma con trig. (Questo è quello che sto facendo attualmente.)
  2. uso aa texture o gruppo di texture che scala in modo appropriato, come ad esempio 9-Slice Scaling

Il problema con la prima opzione è che antialiasing non viene gratuitamente, e se si mira alla compatibilità con un'ampia gamma di dispositivi, non si può fare affidamento sugli hint antialiasing di OpenGL per lavorare effettivamente sull'hardware. Quindi ti restano dei rettangoli arrotondati dall'aspetto mosso, specialmente per quelli piccoli, e l'overhead delle prestazioni di fare un altro richiamo di array di vertici. Vorrei passare da questo

La seconda opzione (9-Slice o 9-Patch) sembra essere il metodo go-to per gli elementi rettangolari arrotondati dell'interfaccia utente, ma ci sono sorprendentemente poche informazioni sull'implementazione 9- patching in OpenGL ES.

Quello che vorrei è: una strategia efficiente per il rendering di rettangoli arrotondati con antialiasing in OpenGL ES con larghezze dei bordi regolabili, colori dei bordi e colori di riempimento. Eventuali suggerimenti?

+3

Per la prima opzione è possibile eseguire l'antialiasing aggiungendo un bordo sottile lungo la mesh. I vertici all'esterno della mesh hanno un alfa di 0 e i vertici all'interno di un alfa di 1. Se si modula il colore del retto arrotondato con l'alfa che varia otterrai AA. –

+0

Eventuali esempi di codice o risorse su come usare questo metodo per linee curve arbitrarie? – khiner

+0

Controllare le risposte nel http://stackoverflow.com/questions/19560575/draw-a-rounded-rectangle-using-a-single-gldrawelement-triangle-strip-call-i/19782207#19782207 Spero che sarà utile. –

risposta

2

Ciò che si desidera è essenzialmente una tecnica denominata Anti-aliasing bordo.

E 'descritto molto bene in questa risposta: OpenGL ES iPhone - drawing anti aliased lines

basta applicare i vertici trasparenti al confine estremo del rettangolo.