2016-03-24 20 views
1

3Dオブジェクトを読み込む.objファイルローダーを作成したいだけです。すべてはうまくいったが、透明なオブジェクトをロードしようとすると問題が発生する。OpenTK - VBOの透過性問題

ここに問題の写真があります。透明性は機能していますが、なぜ三角形があるのか​​分かりません。私は別のオブジェクト(テクスチャの有無にかかわらず)を読み込もうとしますが、私はいつもこの問題を持っています。ここ

the issue with triangles

the issue with triangles

私の光の設定です:

class Light 
{ 
    public static void SetLight() 
    { 
     GL.Enable(EnableCap.Lighting); 
     GL.Enable(EnableCap.Light0); 
     GL.Enable(EnableCap.ColorMaterial); 

     Vector4 position = new Vector4(0.0f, 200.0f, 300.0f, 1.0f); 
     Vector4 ambient = new Vector4(0.2f, 0.2f, 0.2f, 1.0f); 
     Vector4 diffuse = new Vector4(0.7f, 0.7f, 0.7f, 1.0f); 
     Vector4 specular = new Vector4(1.0f, 1.0f, 1.0f, 1.0f); 

     GL.Light(LightName.Light0, LightParameter.Position, position); 
     GL.Light(LightName.Light0, LightParameter.Ambient, ambient); 
     GL.Light(LightName.Light0, LightParameter.Diffuse, diffuse); 
     GL.Light(LightName.Light0, LightParameter.Specular, specular); 

    } 

    public static void SetMaterial() 
    { 
     GL.Color4(1.0f, 1.0f, 1.0f, 0.5f); 

     Vector4 ambient = new Vector4(0.3f, 0.3f, 0.3f, 0.5f); 
     Vector4 diffuse = new Vector4(1.0f, 1.0f, 1.0f, 0.5f); 
     Vector4 specular = new Vector4(0.0f, 0.0f, 0.0f, 0.5f); 

     GL.Material(MaterialFace.FrontAndBack, MaterialParameter.Ambient, ambient); 
     GL.Material(MaterialFace.FrontAndBack, MaterialParameter.Diffuse, diffuse); 
     GL.Material(MaterialFace.FrontAndBack, MaterialParameter.Specular, specular); 
     GL.Material(MaterialFace.FrontAndBack, MaterialParameter.Shininess, 1.0f); 
    } 
} 

とメインロード機能でも、これらの設定を持っている

GL.Enable(EnableCap.Blend); 
GL.BlendFunc(BlendingFactorSrc.SrcAlpha, BlendingFactorDest.OneMinusSrcAlpha); 

//GL.Enable(EnableCap.DepthTest); 
//GL.Enable(EnableCap.CullFace); 

私は多分、私の知っています答えは最高ではありませんが、私は何がわかりませんこの問題と私はネット上で同様の問題を見つけることさえできません。

答えて

1

あなたの問題は、このです:

enter image description here

あなたがそれらを描画する前に最も近い遠いから透明の顔をソートする必要があります。

+0

深度テストを正しく設定するだけですか? – Luca

+0

深度テストはフラグメントを遠く離れて拒否しますが、ここで明示的にソートする必要があるため、深度バッファは実際には役に立たないのです。 –

+0

今私は透明な音量を避ける理由を覚えています。 – Luca

関連する問題