Próbuję wyrenderować kwadrat z teksturą. Działa, oprócz tego, że dostaję piksele na przekątnej, gdzie spotykają się dwa trójkąty.OpenGL wykreśla niepotrzebne krawędzie krawędzi
Tekstura:
Masę tynkarską wynikiem trzech kwadratów, każdy kwadrat składa się z dwóch trójkątów:
Linia pokazuje tylko na ukośne linie. Nic nie pojawia się na pionowych lub poziomych krawędziach.
Kod:
import qualified Graphics.Rendering.OpenGL as GL
import qualified Graphics.UI.GLFW as GLFW
Inicjalizacja:
GL.lineSmooth $= GL.Enabled
GL.polygonSmooth $= GL.Enabled
GL.blend $= GL.Enabled -- A
GL.blendFunc $= (GL.SrcAlpha, GL.OneMinusSrcAlpha)
GL.lineWidth $= 1.5
Ładowanie Tekstura:
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]
Renderowanie 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
Próbowałem renderowania GL.Polygons
i GL.Quads
: ten sam wynik.
Odchodzą, gdy skomentuję wiersz oznaczony -- A
. Czemu?
Ye bóg, straszny wielobok wygładzający! Zapomniałem już, że ta starożytna obrzydliwość wciąż czai się w R'lyeh. Fajny połów i powodzenia w dalszych podróżach po okolicy! (Śmiało idź i przestaw przełącznik na obiekty buforowe.) – Kos
@Kos, Nadal uczę się OpenGL, nie wiem nic o "obiektach buforowych". Dziękuję, że dałeś wskazówkę do ulepszenia, zacznę szukać i uczyć się o tym teraz. :) –