2011-02-24 7 views
2

내가 다음 코드를 통해 다이렉트 장치를 만들려고 해요 작동합니다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); 

문제는 (예 : 내 사무실 컴퓨터와 같은) 일부 컴퓨터에이 유일한 작품, 그 동안 다른 사람 (특히 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; 
+0

동일한 버전의 DirectX? – MusiGenesis

+2

Managed DirectX는 4 년간 사용이 중단 되었습니까? 이 물건에는 가스가 없어집니다. 2007 년 8 월 SDK 버전이 아직 지원되는 마지막 버전이었습니다. 컴퓨터에서 DirectX와 일치하는 버전이 필요하다고 생각합니다. 버전 9, 나는 생각한다. XNA를 사용하여 앞으로 이동하십시오. –

+0

예, Toughbook과 컴퓨터에서 동일한 DirectX를 사용하고 있습니다. 적어도, dxdiag에 따르면. – Japtar

답변

1

해결되었습니다. 젠장, 이미 바보 같아.

PresentParameters를이 세 줄로 줄이면 Toughbook에서 작동합니다.

// Setup the device parameters 
PresentParameters mPresentParams = new PresentParameters(); 
mPresentParams.Windowed = true; 
mPresentParams.SwapEffect = SwapEffect.Discard;