1
3Dオブジェクトを読み込む.objファイルローダーを作成したいだけです。すべてはうまくいったが、透明なオブジェクトをロードしようとすると問題が発生する。OpenTK - VBOの透過性問題
ここに問題の写真があります。透明性は機能していますが、なぜ三角形があるのか分かりません。私は別のオブジェクト(テクスチャの有無にかかわらず)を読み込もうとしますが、私はいつもこの問題を持っています。ここ
私の光の設定です:
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);
私は多分、私の知っています答えは最高ではありませんが、私は何がわかりませんこの問題と私はネット上で同様の問題を見つけることさえできません。
深度テストを正しく設定するだけですか? – Luca
深度テストはフラグメントを遠く離れて拒否しますが、ここで明示的にソートする必要があるため、深度バッファは実際には役に立たないのです。 –
今私は透明な音量を避ける理由を覚えています。 – Luca