2013-07-04 1 views
0

будучи полным новичком OpenGL, у меня проблема, я не понимаю, как ее решить. Я использую JOGL и пытаюсь нарисовать диск, заполненный сплошным цветом и другим цветом границы. Моя проблема очевидна в следующем изображении:GLUQuadric Диск нарисован, но цвет заливки не является сплошным

gluquadric disk

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

glColor3ub(r, g, b); // purple 
gluDisk(quadric, 0, 50, 32, 2); 

glColor3ub(r, g, b); // dark gray 
gluDisk(quadric, 49, 50, 32, 2); 

Я подозреваю, что я сделал что-то не так с смешиванием/сглаживанием. Когда я отключу сглаживание, форма рисуется сплошным цветом; однако мне нужен АА. Я настроил АА и смешивание, как показано ниже:

glEnable(GL2.GL_BLEND); 
glBlendFunc(GL2.GL_SRC_ALPHA, GL2.GL_ONE_MINUS_SRC_ALPHA); 

glEnable(GL2.GL_LINE_SMOOTH); 
glHint(GL2.GL_LINE_SMOOTH_HINT, GL2.GL_NICEST); 

glEnable(GL2.GL_POLYGON_SMOOTH); 
glHint(GL2.GL_POLYGON_SMOOTH_HINT, GL2.GL_NICEST); 

Наконец, мой GLCanvas создается со следующим GLCapabilities:

caps.setAlphaBits(16); 
caps.setDoubleBuffered(true); 
caps.setHardwareAccelerated(true); 

Кроме этого, оказывающие свойства квадрики по умолчанию. Кто-нибудь понимает, что я сделал неправильно? Приносим извинения за любую информацию, которая может отсутствовать! Спасибо за прочтение!

Илиас

ответ

1

Виной GL_POLYGON_SMOOTH. Результатом этого является сглаживание, которое никогда не работало безболезненно, и артефакты, подобные тем, которые вы видите. Более лучший метод сглаживания - это мультисэмплинг. Есть учебник по адресу http://www.opengl.org/wiki/Multisampling