OpenGL三角形不需要的边边界

OpenGL三角形不需要的边边界,opengl,haskell,Opengl,Haskell,我试图用纹理渲染一个正方形。 这是可行的,除了我在对角线上画了一条像素线,两个三角形相交 纹理: 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) _ <- G

我试图用纹理渲染一个正方形。 这是可行的,除了我在对角线上画了一条像素线,两个三角形相交

纹理:

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]

渲染结果为三个正方形,每个正方形由两个三角形组成:

这条线只显示在对角线上。垂直或水平边缘上不显示任何内容

代码:

初始化:

GL.lineSmooth    $= GL.Enabled
GL.polygonSmooth $= GL.Enabled
GL.blend         $= GL.Enabled -- A
GL.blendFunc     $= (GL.SrcAlpha, GL.OneMinusSrcAlpha)
GL.lineWidth     $= 1.5
加载纹理:

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]
我尝试过渲染
GL.Polygons
GL.Quads
:同样的结果


当我对标有
--A
的行进行注释时,它们就会消失。为什么?

问题在于行
GL.polygonSmooth$=GL.Enabled
。它似乎可以平滑多边形的所有边,即使多边形上还有另一条边

删除这一行是可行的,即使保持
GL.blend$=GL.Enabled

报告说:

[Polygon smooth]不是抗锯齿的推荐方法。使用 而是多采样


诸神啊,可怕的多边形平滑!我已经忘了,这个古老的令人憎恶的东西仍然潜伏在勒伊。抓到好鱼,祝哈斯凯利今后的旅程好运!(继续,找个时间切换到缓冲区对象。)@Kos,我还在学习OpenGL,对“缓冲区对象”一无所知。感谢您提供改进建议,我现在就开始搜索和学习。:)
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