Sulla base della mia lettura di Ch. 6 nel Libro Rosso, cambiando le cose che devono essere cambiate per ES, ho pensato che il seguente codice avrebbe dovuto farlo:Come si ottiene Polygon Antialiasing in OpenGL ES su Android 1.5?
gl.glEnable(GL10.GL_POLYGON_SMOOTH);
gl.glBlendFunc(GL10.GL_SRC_ALPHA_SATURATE, GL10.GL_ONE);
gl.glHint(GL10.GL_POLYGON_SMOOTH_HINT, GL10.GL_NICEST); // no visible diff
gl.glHint(GL10.GL_PERSPECTIVE_CORRECTION_HINT, GL10.GL_NICEST);
gl.glColor4f(1, 1, 1, 1);
gl.glDrawArrays(GL10.GL_TRIANGLE_STRIP, 0, 4); // first and count
ecc
Ma quanto sopra fallisce. Non vi è alcuna differenza visibile nell'output, gli artefatti di aliasing sono altrettanto dolorosamente evidenti di prima che venissero inserite le chiamate a glEnable ... glHint.
In realtà, quello che ho appena descritto era quando avevo GL_LINE_SMOOTH al posto di GL_POLYGON_SMOOTH. Quest'ultimo non è nemmeno stato trovato! Allora, dov'è, se non in GL10? O come potrebbe essere stato lasciato fuori da OpenGL ES? Come dovremmo disegnare i poligoni riempiti con antialiasing se non con GL_POLYGON_SMOOTH?
Andres è sicuramente a qualcosa e la risposta è utile. Ma mi chiedo: l'emulatore non supporta l'anti-aliasing? Perché vedo l'errore anche sull'emulatore. A proposito: la prima cosa che ho notato sul secondo link di Andres è che la domanda è rimasta senza risposta anche lì! –