5

次の図のように三角形を描くときにマルチサンプリングを有効にしたいと思います。 ここに画像の説明を入力

別の質問でSlimDXを使用する方法を見つけましたが、排他モードでは機能しません。

これが私のコードです:

void Form1_Load(object sender, EventArgs e)
{
    Direct3D d3d = new Direct3D();

    PresentParameters presentParams;

    presentParams.Windowed = false;
    presentParams.BackBufferFormat = Format.X8R8G8B8;
    presentParams.BackBufferWidth = 800;
    presentParams.BackBufferHeight = 600;
    presentParams.FullScreenRefreshRateInHertz = 60;
    presentParams.SwapEffect = SwapEffect.Copy;
    presentParams.BackBufferCount = 1;
    presentParams.PresentationInterval = PresentInterval.One;

    int multisampleQuality;
    Result result;
    if (d3d.CheckDeviceMultisampleType(adaptor, DeviceType.Hardware, Format.X8R8G8B8, false, MultisampleType.FourSamples, out multisampleQuality, out result))
    {
        if(multisampleQuality > 4)
        {
            presentParams.Multisample = multisampleType;
            presentParams.MultisampleQuality = 4;
        }
    }

    // Device creation
    Device device = new Device(d3d, adaptor, DeviceType.Hardware, this.Handle, CreateFlags.HardwareVertexProcessing, presentParams);
}

CheckDeviceMultisampleTypeがエラーなしで常に true を返し、 multisampleQuality に対して 8 を返す場合でも、最後の行は常に D3DERR_INVALIDCALLエラーでクラッシュします。

ウィンドウモードを使用するか、マルチサンプルオプションを削除すると機能します。

誰かが何が悪いのか教えてもらえますか?

4

1 に答える 1

1

試してみてください

 presentParams.SwapEffect = SwapEffect.Discard;
于 2012-10-17T16:22:16.950 に答える