5

テクスチャ付きの正方形をレンダリングしようとしています。2 つの三角形が交わる対角線のエッジにピクセル化された線が表示されることを除いて、機能しています。

テクスチャ:

正方形に使用されるテクスチャ

3 つの正方形のレンダリング結果。各正方形は 2 つの三角形で構成されています。

レンダリング結果

線は対角線にのみ表示されます。垂直または水平のエッジには何も表示されません。

コード:

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ます。なんで?

4

1 に答える 1

8

問題は行にありGL.polygonSmooth $= GL.Enabledます。ポリゴンの上に別のエッジがある場合でも、ポリゴンのすべてのエッジを滑らかにしているようです。

この行を削除しても、GL.blend $= GL.Enabled.

OpenGL wikiのCommon Mistakes ページには、次のように書かれています。

[ポリゴンスムース]はアンチエイリアスの推奨方法ではありません。代わりにマルチサンプリングを使用してください。

于 2013-01-07T20:55:17.963 に答える