2012-09-24 120 views
0

我想將SlimDX設備創建教程從DX11轉換爲DX9。這是一個非常簡單的教程,您可以在其中創建一個窗口,添加一個dx9設備並用純色填充屏幕。但是,當我嘗試創建設備時,我遇到了一個D3DERR_NOTAVAILABLE錯誤。所有代碼似乎都有意義,它看起來與樣本中使用的C#代碼非常相似。有任何想法嗎?注意:我創建了BaseDisplay類的一個實例,並在另一個類中調用InitSlimDX方法。設備創建期間出錯(D3DERR_NOTAVAILABLE)

Imports SlimDX.Windows 
Imports SlimDX.Direct3D9 
Imports SlimDX 
Imports Device = SlimDX.Direct3D9.Device 
Imports Resource = SlimDX.Direct3D9.Resource 
Imports System.Windows.Forms.ThreadExceptionDialog 
Imports System.IO 

Public Class BaseDisplay 
    Inherits RenderForm 

'SlimDX Class Vars 
Protected device As Device = Nothing 
Protected backBuffer As Surface 
Protected presentParams As PresentParameters 

Public Sub New() 
    Show() 
End Sub 

Public Sub InitSlimDX() 
    Dim d3d As Direct3D = New Direct3D() 
    Dim primaryAdaptor As AdapterInformation = d3d.Adapters().First() 

    presentParams = New PresentParameters() 
    With presentParams 
     .BackBufferWidth = Me.ClientSize.Width 
     .BackBufferHeight = Me.ClientSize.Height 
    End With 

    Me.device = New Device(d3d, primaryAdaptor.Adapter, DeviceType.Hardware, Me.Handle, CreateFlags.HardwareVertexProcessing, presentParams) 
    Me.device.BeginScene() 
    backBuffer = device.GetBackBuffer(0, 0) 
    Me.device.ColorFill(backBuffer, New Color4(Color.CornflowerBlue)) 
    Me.device.EndScene() 
    Me.device.Present() 
End Sub 

Public Overloads Sub Dispose() 
    device.Dispose() 
    MyBase.Dispose() 
End Sub 
End Class 
+0

我想清楚我的問題是什麼。之前,我在DirectX控制面板中搞亂了我的DX9設置,出於某種原因,我啓用了禁用硬件加速的「Software Only」設置。禁用此選項可解決問題。一旦網站允許我將添加解決方案作爲答案。 –

回答

1

我想清楚我的問題是什麼。之前,我在DirectX控制面板中搞亂了我的DX9設置,出於某種原因,我啓用了禁用硬件加速的「Software Only」設置。禁用此選項可解決問題。