gpt4 book ai didi

OpenGL 三角形不需要的边缘边框

转载 作者:行者123 更新时间:2023-12-02 02:08:38 25 4
gpt4 key购买 nike

我正在尝试渲染一个带有纹理的正方形。它正在工作,只是我在两个三角形相遇的对角边缘上得到了一条像素化线。

纹理:

Texture used on the squares

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

Render result

该线仅显示在对角线上。垂直或水平边缘上没有任何内容。

代码:

import qualified Graphics.Rendering.OpenGL as GL
import qualified Graphics.UI.GLFW as GLFW

初始化:

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.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

我尝试渲染 GL.PolygonsGL.Quads:结果相同。

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

最佳答案

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

删除这一行是有效的,甚至可以维护 GL.blend $= GL.Enabled

Common Mistakes page at OpenGL wiki说:

[Polygon smooth] is not a recommended method for anti-aliasing. Use Multisampling instead.

关于OpenGL 三角形不需要的边缘边框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14201451/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com