Как получить сглаживание Polygon в OpenGL ES на Android 1.5? - PullRequest
7 голосов
/ 09 апреля 2010

На основании моего прочтения гл. 6 в Красной книге, меняя то, что нужно изменить для ES, я подумал, что следующий код должен был это сделать:

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

и т.д.

Но вышесказанное не помогает. Нет видимой разницы в выводе, артефакты наложения так же болезненно очевидны, как и до того, как были вставлены вызовы glEnable ... glHint.

На самом деле, я только что описал, когда вместо GL_POLYGON_SMOOTH у меня было GL_LINE_SMOOTH. Последний даже не найден! Так где же это, если не в GL10? Или как это могло быть оставлено вне ES OpenGL? Как мы должны рисовать заполненные полигоны с сглаживанием, если не с помощью GL_POLYGON_SMOOTH?

1 Ответ

3 голосов
/ 07 января 2011

Без попытки того, что вы делаете выше, не кажется неправильным. Однако многие телефоны на самом деле не поддерживают сглаживание, несмотря на то, что API это делает.

Вы должны быть в состоянии достичь полноэкранного сглаживания, рисуя экран несколько раз при дрожании соответствующей матрицы.

См. http://www.opengl.org/resources/code/samples/advanced/advanced97/notes/node63.html и этот пост относительно той же проблемы на iPhone

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...