2017-09-09 3 views
2

Je veux dessiner un cercle simple, avec OpenGL en C#, mais je reçois seulement ceci:OpenTK dessiner cercle transparent

img

J'ai essayé la fonction de mélange, mais il n'a pas fonctionné. Mon code:

public static void DrawCircle(float x, float y, float radius, Color4 c) 
    { 
     GL.Enable(EnableCap.Blend); 
     GL.BlendFunc(BlendingFactorSrc.SrcAlpha, BlendingFactorDest.OneMinusSrcAlpha); 
     GL.Begin(PrimitiveType.TriangleFan); 
     GL.Color4(c); 

     GL.Vertex2(x, y); 
     for (int i = 0; i < 360; i++) 
     { 
      GL.Vertex2(x + Math.Cos(i) * radius, y + Math.Sin(i) * radius); 
     } 

     GL.End(); 
     GL.Disable(EnableCap.Blend); 
    } 
+1

À quoi pensez-vous qu'il ressemble? Un trou? – TaW

Répondre

0

Si vous voulez dessiner un cercle transparent, alors vous devez utiliser un canal alpha inférieur à 255, lorsque vous définissez GL.Color4.

GL.Color4(red, green, blue, 127); // alpha = 127 for semi-transparent 


Mais si vous voulez attirer l'contur d'un cercle, alors vous devez changer le type primitif:

Le type primitif PrimitiveType.TriangleFan dessinera une région. Utilisez PrimitiveType.LineLoop pour dessiner une conture.
Voir PrimitiveType et OpenGL Primitive.