Comment dessiner des lignes lisses en OpenGL avec antialiasing?
J'ai besoin de tirer une ligne régulière en OpenGL et voici ce que j'ai fait:
glEnable( GL_LINE_SMOOTH );
glEnable( GL_POLYGON_SMOOTH );
glHint( GL_LINE_SMOOTH_HINT, GL_NICEST );
glHint( GL_POLYGON_SMOOTH_HINT, GL_NICEST );
glBegin( GL_LINE_STRIP );
for( UINT uiPoint = 0; uiPoint < iNumPoints; ++uiPoint )
{
const Coord &Node = vecPoints[uiPoint];
glVertex3f( Node.x, Node.y, Node.z );
}
glEnd();
Ce que je peux faire?
OriginalL'auteur q0987 | 2010-08-18
Vous devez vous connecter pour publier un commentaire.
Vous pouvez générer mince, écran orienté polygones au lieu de cela, et de définir le fragment de l'alpha en fonction de la distance à la ligne.
Exemple :
Supposons que vous voulez dessiner le segment [AB].
(plus ou moins la technique utilisée dans ShaderX5)
Mais cela uniquement si vous ne pouvez pas utiliser MSAA.
Bell belle référence, je ne savais pas qu'il était dans gpugems2 trop
cela ne peut pas être fait avec un gradient de texture, mip niveaux et trilinéaire filtre? cela permet d'économiser de l'invocation de la plus profonde et la plus sombre des parties de la canalisation et intuitive de l'omi...
Malheureusement, non, ou je l'aurais proposé cette solution.
OriginalL'auteur
Vous devez également activer le mélange pour une ligne de lissage de travail. Essayez:
et puis le dessin des lignes. Il peut également aider à définir la largeur de la ligne à une non-partie intégrante de la largeur.
Comme d'autres l'ont mentionné, ce ne sera pas lisser les arêtes de polygones, mais il permettra de créer de l'anticrénelage de lignes.
Je suis en utilisant ces lignes, mais ne fonctionne pas très bien. Veuillez voir ma question: stackoverflow.com/questions/30726077/...
OriginalL'auteur
GL_POLYGON_SMOOTH par elle-même ne vous rien de bon. Vous devez forcer l'antialiasing lorsque contexte OpenGL est créé. Qu'utilisez-vous pour créer de la fenêtre OpenGL? Voir si elle prend en charge l'anticrénelage parmi ses paramètres. Ou vous pouvez forcer l'antialiasing pour tous les programmes OpenGL Nvidia ou ATI outils... tout dépend de votre installation.
Désolé, qui ne dit rien. Quelle bibliothèque il utilise? Existe-il des paramètres à commencer OpenGL (comme la couleur, la profondeur, pochoir présence, de z-buffer de la taille et ainsi de suite)?
OriginalL'auteur
Comme une autre réponse mentionné, l'activation de l'anticrénelage aide - comment faire pour activer cela dépend de votre contexte de création, mais cette info sera, j'espère, de l'utilisation de GLFW utilisateurs.
Si l'aide de GLFW 2:
glfwOpenWindowHint(GLFW_FSAA_SAMPLES, 4);
Si l'aide de GLFW 3:
glfwWindowHint(GLFW_SAMPLES, 4);
...ou quel que soit le nombre d'anticrénelage échantillons que vous préférez. Les conseils ci-dessus doivent être définis avant l'ouverture de la GLFW fenêtre.
OriginalL'auteur
Il n'y a aucune garantie de la
GL_LINE_SMOOTH
ouGL_POLYGON_SMOOTH
va faire quelque chose.Bien qu'ils ressemblent à des fonctionnalités de base de mon expérience, c'est que beaucoup de matériel n'est pas mise en œuvre de ces ceux qui ne ne pas mettre en œuvre de manière cohérente, et si elles ne le mettre en œuvre l'impact sur les performances peut être considérable. si vous regardez la spécification OpenGL documents - ces derniers fournissent une excellente référence pour l'ensemble de la bibliothèque, cependant, vous ne trouverez aucune mention de ces parce qu'ils ne font pas partie de la spécification. Vous pouvez confirmer cela à un certain degré, en regardant les specs pour glEnable: khronos.org/opengles/sdk/docs/man/xhtml/glEnable.xml
bien qu'ils ressemblent à des fonctionnalités de base de mon expérience, c'est que beaucoup de matériel n'est pas mise en œuvre de ces ceux qui ne ne pas mettre en œuvre de manière cohérente, et si elles ne le mettre en œuvre l'impact sur les performances peut être considérable. si vous regardez la spécification OpenGL documents - ces derniers fournissent une excellente référence pour l'ensemble de la bibliothèque, cependant, vous ne trouverez aucune mention de ces parce qu'ils ne font pas partie de la spécification. Vous pouvez confirmer cela à un certain degré, en regardant les specs pour glEnable: khronos.org/opengles/sdk/docs/man/xhtml/glEnable.xml
OriginalL'auteur
Nanovg est un logiciel de dessin 2D qui rend à OpenGL. Je l'ai utilisé, aux côtés des OpenGL pour ne rempli et caressa 2D chemins d'accès et des lignes. https://github.com/memononen/nanovg
OriginalL'auteur