2010-01-08 4 views
3

Я использую эти вызовы функций:Как заставить сглаживание полигона работать?

glEnable(GL_BLEND) 
glEnable(GL_POLYGON_SMOOTH) 
glBlendFunc(GL_SRC_ALPHA_SATURATE, GL_ONE) 

Она не работает и не будет оказывать.

glEnable(GL_BLEND) 
glEnable(GL_POLYGON_SMOOTH) 
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA) 

Это не анти-псевдоним.

+1

Возможно, вы должны изменить название своего вопроса; похоже, что это не касается сглаживания, а создания многоугольников с закругленными углами. – Feanor

ответ

7

Попробуйте glHint(GL_POLYGON_SMOOTH_HINT, GL_NICEST)

+0

Благодарим вас за ответ. К сожалению, я получаю: OpenGL.error.GLError: GLError ( \t заблуждается = 1280, \t описание = 'недопустимый enumerant', \t baseOperation = glHint, \t cArguments = (GL_POLYGON_SMOOTH, GL_NICEST) ) Не знаю, что это значит, но это не нравится. Я использую OpenGL с python. –

+0

К сожалению, это должно было быть 'GL_POLYGON_SMOOTH_HINT', а не' GL_POLYGON_SMOOTH'. Я обновил свой ответ. – tkerwin

+0

Спасибо, но он все еще не работает. Я хочу создать закругленные углы в своей 2D-игре, поэтому я использую полигоны. Было бы неплохо иметь углы гладкие. Сглаживание линии работает. Не знаю, почему этого не происходит. –

3

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

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