Sto provando a rendere un quadrato con trama. Funziona, eccetto che ottengo una linea pixelata sul bordo diagonale dove due triangoli si incontrano.Triangolo OpenGL bordo bordo indesiderato
La trama:
Il risultato di tre quadrati rendering, ogni quadrato è costituito da due triangoli:
La linea mostrato soltanto in linee diagonali. Nulla appare sui bordi verticali o orizzontali.
Codice:
import qualified Graphics.Rendering.OpenGL as GL
import qualified Graphics.UI.GLFW as GLFW
inizializzazione:
GL.lineSmooth $= GL.Enabled
GL.polygonSmooth $= GL.Enabled
GL.blend $= GL.Enabled -- A
GL.blendFunc $= (GL.SrcAlpha, GL.OneMinusSrcAlpha)
GL.lineWidth $= 1.5
Caricamento la trama:
GL.texture GL.Texture2D $= GL.Enabled
(texName:_) <- GL.genObjectNames 1
GL.textureBinding GL.Texture2D $= Just texName
GL.textureFilter GL.Texture2D $= ((GL.Nearest, Nothing), GL.Nearest)
_ <- GLFW.loadTexture2D "wall.tga" [GLFW.BuildMipMaps]
rendering il quad:
GL.textureBinding GL.Texture2D $= Just texName
GL.renderPrimitive GL.TriangleStrip $ do
GL.texCoord $ GL.TexCoord2 0 (1::GL.GLfloat)
GL.vertex $ vertex3 20 0 0
GL.texCoord $ GL.TexCoord2 0 (0::GL.GLfloat)
GL.vertex $ vertex3 20 20 0
GL.texCoord $ GL.TexCoord2 1 (1::GL.GLfloat)
GL.vertex $ vertex3 0 0 0
GL.texCoord $ GL.TexCoord2 1 (0::GL.GLfloat)
GL.vertex $ vertex3 0 20 0
GL.textureBinding GL.Texture2D $= Nothing
Ho provato il rendering GL.Polygons
e GL.Quads
: stesso risultato.
Se ne vanno via quando commento la riga taggata con -- A
. Perché?
Ye the, il temuto poligono che lisce! Ho già dimenticato che quest'antica abominazione si nasconde ancora in R'lyeh. Bella cattura e buona fortuna con ulteriori viaggi haskelly! (Vai avanti e fai il passaggio agli oggetti buffer a volte.) – Kos
@Kos, sto ancora imparando OpenGL, non so nulla di "oggetti buffer". Grazie per avermi suggerito un miglioramento, inizierò a cercare e impararlo ora. :) –