次のコードを使用して DirectX デバイスを作成しようとしています。
Caps deviceCapability;
int deviceAdapter = Manager.Adapters.Default.Adapter;
try
{
deviceCapability = Manager.GetDeviceCaps(
deviceAdapter, DeviceType.Hardware);
}
catch (Exception ex1)
{
try
{
deviceCapability = Manager.GetDeviceCaps(
deviceAdapter, DeviceType.Software);
}
catch (Exception ex2)
{
deviceCapability = Manager.GetDeviceCaps(
deviceAdapter, DeviceType.Reference);
}
}
CreateFlags deviceFlags = CreateFlags.SoftwareVertexProcessing;
if(deviceCapability.DeviceCaps.SupportsHardwareTransformAndLight == true)
{
deviceFlags = CreateFlags.HardwareVertexProcessing;
}
mDevice = new Device(deviceAdapter, deviceCapability.DeviceType,
mInvisiblePanel, deviceFlags, mPresentParams);
問題は、これが一部のコンピューター (私の職場のコンピューターなど) でのみ機能し、他のコンピューター (具体的には、Panasonic CF-19 Toughbook) では機能しないことです。問題のある PC で dxdiag を介してハードウェア アクセラレーションが有効になっていることを確認しましたが、それでも動きません。
残念ながら、表示される唯一のエラー メッセージは「アプリケーションでエラーが発生しました」です。上記のコードの間にいくつかのメッセージ ボックスを貼り付けたことがありますが、ex1 および ex2 の catch ブロックにヒットすることはないようです。
これを修正する方法についてのアイデアはありますか?
編集: 申し訳ありませんが、PresentParameters を表示するのを忘れていたことに気付きました。
// Setup the device parameters
PresentParameters mPresentParams = new PresentParameters();
mPresentParams.Windowed = true;
mPresentParams.SwapEffect = SwapEffect.Discard;
mPresentParams.AutoDepthStencilFormat = DepthFormat.D16;
mPresentParams.EnableAutoDepthStencil = true;
///* TODO: Anti-aliasing is not working
mPresentParams.MultiSample = MultiSampleType.NonMaskable;
mPresentParams.MultiSampleQuality = 0;