Je configure un contexte de noyau OpenGL 3.2 sur Mac OS X. Je souhaite pouvoir dessiner des goûts de noir épais à l'écran. Dans la version pervoiffée de OpenGL, je pourrais simplement définir
GLint range[2]; glGetIntegerv(GL_ALIASED_LINE_WIDTH_RANGE, range); glGetIntegerv(GL_SMOOTH_LINE_WIDTH_RANGE, range);
3 Réponses :
Cela pourrait dépendre du type de projection que vous avez configuré. Utilisez-vous une matrice de projection orthographique ou perspective? P>
Je pense que si vous n'utilisez pas la projection orthographique, la rasterisation finale de la primitive sera soumise à la distance de l'objet (matrice de modèle) de la caméra (matrice de vue). P>
acclamations p>
J'utilise la projection orthographique.
Utilisation du profil de noyau OpenGL 3.2, appelez GllineWidth em> avec une valeur supérieure à 1,0 donnez une erreur invalide_value (appel Glgeterror em> pour le prouver). P>
Vous pouvez sûrement obtenir le résultat souhaité en déterminant le quad requis pour dessiner la ligne. P>
Je pense que vous devriez pouvoir générer des quads à partir de points de ligne: hé, une ligne plus grande est une quad! Peut-être que vous pourriez utiliser Techinques comme Ce pour obtenir le résultat recherché. P>
La clé est la suivante: au lieu de s'appuyer sur la ligne de ligne, vous donnez une unité de quad à une unité d'entrée (4 sommets à l'aide de la bande triangulaire), puis transformez les sommets entrants à l'intérieur d'un shader qui passe à des uniformes appropriés. P>
Une autre approche pourrait peut-être rendu à l'aide d'un shader de géométrie: générer un quad à partir d'un point. Cependant, je ne suis pas sûr de ce point. Je ne sais pas si un shader de géométrie (seulement si cela est réalisable, bien sûr) serait la meilleure approche: le coût de dessin d'une bande de ligne utilisant un seul quad serait la configuration uniforme de shader pour chaque ligne composant la bande. p>
On dirait que le moyen meilleur / unique de le faire est que deux dessinez l'éther de géométrie complète à travers la géométrie initiale ou un shader de géométrie.
LIGNE WIDTH> 1.0 est obsolète et non pris en charge dans un profil principal OpenGL Contexte a >. Les fonctionnalités suivantes sont obsolètes, mais toujours présentes dans le profil de base. Ils
Peut être supprimé d'une version future de OpenGL et sont supprimées dans un contexte à l'avenir implémentant le profil principal. P>
Pour un contexte de profil de base, des solutions possibles sont présentées dans les réponses à:
Cependant, il est toujours maintenu dans un contexte de profil de compatibilité. P>
Width Line OpenGL
GLSL Geometry Shader pour remplacer GlllineWidth
Dessiner une ligne de largeur variable dans OpenGL (non GlllineWidth) a >
OpenGL: lignes épaisses et lisses / non brisées en 3D em>
sub> p>