2009-08-13 6 views
1

GL_POLYGON n'est pas rempli correctement?

Pourquoi ces lignes apparaissent-elles dans ma forme?

Je suis OpenGL comme celui-ci d'initialisation:

glDisable(GL_TEXTURE_2D); 
glDisable(GL_DEPTH_TEST); 
glDisable(GL_COLOR_MATERIAL); 
glEnable(GL_BLEND); 
glEnable(GL_POLYGON_SMOOTH); 
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); 
glClearColor(0, 0, 0, 0); 

et le dessin de la forme comme ceci:

glClear(GL_COLOR_BUFFER_BIT); 
glColor3f(1, 0, 0); 
glBegin(GL_POLYGON); 
    glVertex2f(-5, -5); // bottom left 
    glVertex2f(5, -5); // bottom right... 
    glVertex2f(6, 0); 
    glVertex2f(5, 5); 
    glVertex2f(-5, 5); 
glEnd(); 

Peu importe si elle est dans le sens horaire ou antihoraire.

Répondre

3

GL_POLYGON_SMOOTH est une méthode archaïque et lente du polygone anti-aliasing. Cela entraîne également le problème que vous voyez ci-dessus. L'utilisation de l'extension de tampon Multisample est le meilleur moyen d'effectuer un anti-aliasing rapide sur les machines modernes. En savoir plus here.

+0

Il m'a fallu un moment pour comprendre comment activer le multi-échantillonnage, mais je l'ai eu à travailler. Cela fonctionne bien :) Merci, – mpen

3

Je pense que la désactivation de GL_POLYGON_SMOOTH corrige cela, mais vous perdriez l'anti-crénelage. FSAA fonctionnerait comme une alternative, mais ce serait plus lent.

Edit: en regardant autour, il y a beaucoup d'exemples en utilisant là glBlendFunc(GL_SRC_ALPHA_SATURATE, GL_ONE);

+0

La désactivation de GL_POLYGON_SMOOTH l'a effectivement corrigé. Cette dernière solution le fait disparaître complètement. N'y a-t-il pas de bonne médiane? – mpen

Questions connexes