0

SlimDX デバイス作成チュートリアルを DX11 から DX9 に変換しようとしています。これは、ウィンドウを作成して dx9 デバイスを追加し、画面を単色で塗りつぶす、非常に簡単なチュートリアルです。ただしD3DERR_NOTAVAILABLE、デバイスを作成しようとするとエラーがスローされます。すべてのコードは理にかなっているように見え、サンプルで使用されている C# コードと非常によく似ています。何か案は?注: クラスのインスタンスを作成し、別のクラスでメソッドBaseDisplayを呼び出します。InitSlimDX

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
4

1 に答える 1

1

私の問題が何であるかを理解しました。以前、DirectX コントロール パネルで DX9 の設定をいじっていましたが、何らかの理由で、ハードウェア アクセラレーションを無効にする「ソフトウェアのみ」の設定を有効にしました。このオプションを無効にすると、問題が修正されました。

于 2012-09-25T18:32:26.860 に答える