Ich versuche, ein Quadrat mit Textur zu rendern. Es funktioniert, außer dass ich eine pixelierte Linie an der diagonalen Kante bekomme, wo sich zwei Dreiecke treffen.OpenGL Dreiecke unerwünschte Kante Grenze
Die Textur:
Die Render Ergebnis von drei Quadraten ist jedes Quadrat aus zwei Dreiecken:
Die Linie zeigt nur auf diagonalen Linien auf. Nichts erscheint an den vertikalen oder horizontalen Kanten.
Code:
import qualified Graphics.Rendering.OpenGL as GL
import qualified Graphics.UI.GLFW as GLFW
Initialisierung:
GL.lineSmooth $= GL.Enabled
GL.polygonSmooth $= GL.Enabled
GL.blend $= GL.Enabled -- A
GL.blendFunc $= (GL.SrcAlpha, GL.OneMinusSrcAlpha)
GL.lineWidth $= 1.5
Laden der Textur:
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]
das Quad Rendering:
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
Ich habe versucht GL.Polygons
und GL.Quads
Rendering: dasselbe Ergebnis.
Sie gehen weg, wenn ich die mit -- A
getaggte Linie kommentieren. Warum?
Ye Götter, die gefürchtete Polygon Glättung! Ich habe schon vergessen, dass diese uralte Abscheulichkeit immer noch in R'lyeh lauert. Schöner Fang und viel Glück bei weiteren Reisen! (Gehen Sie voran und machen Sie den Schalter, um Objekte irgendwann zu puffern.) – Kos
@Kos, ich lerne immer noch OpenGL, weiß nichts über "Pufferobjekte". Danke, dass du einen Tipp für Verbesserungen gegeben hast, ich werde jetzt anfangen, darüber zu suchen und zu lernen. :) –