2010-01-08 18 views
3

J'utilise ces appels de fonction:Comment faire fonctionner l'antialiasing polygonal?

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

Il ne fonctionne pas et ne sera pas rendu.

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

Il n'est pas anti-alias.

+1

Vous devriez probablement éditer le titre de votre question; il semble que cela ne concerne pas vraiment l'antialiasing, mais la création de polygones avec des coins arrondis. – Feanor

Répondre

7

Essayez glHint(GL_POLYGON_SMOOTH_HINT, GL_NICEST)

+0

Merci pour la réponse. Malheureusement je reçois: OpenGL.error.GLError: GLError ( \t err = 1280, \t description = 'enumerant invalide', \t baseOperation = glHint, \t cArguments = (GL_POLYGON_SMOOTH, GL_NICEST) ) Aucune idée de ce que cela signifie mais ça ne l'aime pas. J'utilise OpenGL avec python. –

+0

Oups, c'était censé être "GL_POLYGON_SMOOTH_HINT", pas "GL_POLYGON_SMOOTH". J'ai mis à jour ma réponse. – tkerwin

+0

Merci mais ça ne marche toujours pas. Je veux créer des coins arrondis sur mon jeu 2D, c'est pourquoi j'utilise des polygones. Ce serait bien d'avoir les coins lisses. Le lissage de ligne fonctionne. Aucune idée de pourquoi cela ne fonctionne pas. –

3

Ceci est une réponse banale .. mais si vous voulez des coins arrondis, vous aurez probablement envie d'utiliser plus plusieurs sommets dans les coins et les placer pour une forme plus arrondie. Vous pouvez aussi essayer de le faire de manière procédurale ... mais si vous faites un jeu et que vous voulez le terminer, je vous recommande habituellement d'avoir la position finale du sommet dans les données (sauf si vous avez une raison impérieuse de le faire c'est dynamique).

Vous pouvez également utiliser une texture arrondie près des coins. Cela devient progressivement moins populaire que le matériel vidéo devient plus puissant, mais il est encore assez efficace.