Я пытаюсь создать устройство 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).Я проверил, чтобы убедиться, что на компьютере-нарушителе включено аппаратное ускорение через dxdiag, и он все еще не сдвинулся с места.
К сожалению, единственное сообщение об ошибке, которое я получаю, это «Ошибка в приложении».Я даже вставил несколько окон сообщений между приведенным выше кодом, и кажется, что он никогда не попадает в блок catch ex1 и ex2.
Есть идеи, как это исправить?
Редактировать: Извините,Я только что понял, что забыл показать свои 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;