2
我想通過下面的代碼來創建一個DirectX設備:C#:無法創建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);
的問題是,在某些計算機上這只是作品(如我的工作電腦),而它不在別人身上(具體而言,是松下CF-19 Toughbook)。我已經檢查過,以確保有問題的電腦通過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;
相同版本的DirectX? – MusiGenesis 2011-02-24 00:49:26
受管DirectX已被棄用4年了嗎?這東西用完了。 2007年8月的SDK版本是最後一個仍支持它的版本,我想你需要在機器上使用匹配的DirectX版本。版本9,我想。使用XNA前進。 – 2011-02-24 00:56:00
是的,我在Toughbook和我的機器上安裝了相同的DirectX。至少,根據dxdiag。 – Japtar 2011-02-24 00:56:51