Je veux savoir comment dessiner un cercle. D'après ce que je comprends, cela ne peut se faire qu'en utilisant beaucoup de triangles. Cependant, je ne peux pas trouver un tutoriel qui l'explique assez clairement pour que je puisse comprendre et reproduire. Est-ce que quelqu'un sait bons sites tutoriels/peut m'expliquer comment en faire un?Comment dessiner un cercle dans Haskell en utilisant opengl
Répondre
Je ne pense pas qu'il y ait un moyen de dessiner un vrai cercle en OpenGL, mais il y a deux façons de base pour approximer:
Utilisez une texture: Assurez-vous que la texture prend en charge la transparence et que vous ayez un paramétrage approprié (quelque chose que vous devriez trouver dans n'importe quelle introduction OpenGL), alors chargez simplement un fichier image contenant un cercle et appliquez-le à un carré. Pour dessiner beaucoup de petits cercles (pour un moteur de particules, par exemple) c'est la voie à suivre. Dessiner un polygone avec beaucoup de côtés: Soit un éventail de triangles d'un coin ou un groupe de tranches se rencontrant au centre. Plus vous utilisez de triangles, plus ils ressembleront à un vrai cercle, mais ceux-ci sont une ressource finie et vous ne voulez pas toujours dépenser beaucoup de polygones pour approximer les courbes. C'est mieux si vous avez seulement quelques cercles qui seront dessinés assez grand pour rendre la texture gênante.
Pour un exemple de cette dernière approche, vous pouvez regarder the graphics-drawingcombinators
package, qui utilise un polygone de 24 côtés. Pour des exemples de la première, tout tutoriel sur l'utilisation de textures fera l'affaire.
ok donc juste une image d'un cercle avec un fond transparent? – lewdsterthumbs
Bien sûr, on peut dessiner un cercle (presque) parfait au niveau du fragment. À l'aide d'un fragment shader, jetez tous les fragments à l'extérieur du rayon du cercle. – datenwolf
Dans mes exploits de programmation de jeux, j'ai trouvé qu'un 18-gon à un 24-gon apparaît très circulaire s'il ne devient pas trop grand. – luqui
Peut-être que cela va aider à démarrer:
circle (x, y) radius divs = map toPoint angles where
arc = 2.0 * pi/fromIntegral divs
toPoint a = (x + cos a * radius, y + sin a * radius)
angles = map ((*arc) . fromIntegral) [0..divs]
http://www.haskell.org/haskellwiki/OpenGLTutorial1 montre les bases de la mise en place d'une fenêtre, et comment utiliser HOpenGL.
renderFan points = do
renderPrimitive TriangleFan $ mapM_ (\(x, y) -> vertex (Vertex2 x y)) points
Ensuite, créez un ventilateur en incluant le point central, par exemple:
renderCircle centre radius divs = renderFan (centre : circle centre radius divs)
type Point = (Float, Float)
type Polygon = [Point]
circle :: Point -> Float -> Polygon
circle (x,y) r = map (\t -> (x+r*cos (t), y+r*sin (t))) [0,0.2..(2*pi)]
-- center radius
ball = circle (0,0.2) 0.2
Ensuite, il est utile d'avoir
points2GL :: [Point] -> [(GLfloat,GLfloat)]
points2GL l = [ (realToFrac x, realToFrac y) | (x,y) <- l ]
glPoints2Vertexes pts = mapM_ (\(x, y) -> vertex $ Vertex2 x y) pts
points2Vertexes pts = glPoints2Vertexes (points2GL pts)
, vous rendez la balle faisant
renderPrimitive Polygon (points2Vertexes ball)
- 1. comment dessiner un cercle en utilisant opengl4
- 2. Comment puis-je dessiner un demi-cercle en opengl
- 3. Comment dessiner un cercle plus petit dans opengl en utilisant ce code comme point de départ?
- 4. openGL GLSL Shader: dessiner un cercle sur un polygone plat
- 5. Comment dessiner un cercle anti-aliasé avec l'iPhone OpenGL ES
- 6. Comment dessiner un cercle dans img en utilisant php?
- 7. Comment dessiner un cercle dans silverlight en utilisant les coordonnées?
- 8. Comment dessiner Circle en utilisant OpenGl dans android?
- 9. en utilisant un script d'action comment dessiner un demi-cercle
- 10. Dessiner un cercle dans android
- 11. Mapkit dessiner un cercle
- 12. dessiner un cercle en flex
- 13. Comment dessiner un cercle plein en Java?
- 14. Comment dessiner un demi-cercle
- 15. Comment dessiner un cercle plein?
- 16. Comment dessiner un cercle transparent?
- 17. Comment dessiner un parallélépipède et dessiner un cercle plein en son centre
- 18. Comment dessiner un cercle dans cocos2dx
- 19. Comment dessiner un cercle concentrique dans l'iphone?
- 20. OpenGL VBO dans Haskell
- 21. Comment changer les textures dans OpenGL en utilisant Haskell
- 22. Comment dessiner un serpent dans opengl?
- 23. dessiner un cercle rempli
- 24. comment dessiner géométrie OpenGL dans Qt 5.7 en utilisant glew
- 25. Comment dessiner un arc en OpenGL
- 26. comment dessiner un cercle dans une ligne diagonale en java?
- 27. Dessiner un bouton en demi-cercle iOS
- 28. Dessiner un demi-cercle/demi-cercle dans WPF/C#
- 29. Quartz2D: Comment dessiner un arc de cercle?
- 30. OpenGL: Comment dessiner un cube dans OpenTK?
Eh bien, la question est un peu large. Que savez-vous réellement? En plus de cela, une masse de triangles n'est pas la seule option. Une autre bonne idée est un quad simple texturé (juste deux triangles) avec une texture alpha (complètement transparent partout en dehors du cercle). –
Eh bien, par rapport à ce que vous venez de dire, absolument rien. Comme je l'ai dit, je suis nouveau à cela. – lewdsterthumbs