問題タブ [directx-12]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - DirectX12 commandList 実行エラー
DirectX12 の学習を開始し、ある種の単純なエンジンを作成しようとしています。Frank D. Luna の「DirectX12 を使用した 3D プログラミングの概要」に従っていますが、いくつかの問題があります。まず、swapChain の作成中に、次のように説明を入力します。
「パラメーターが正しくありません」というエラーが表示されます。MSDN で既に解決策を見つけましたが、何が間違っているのか知りたいです。
2番目の質問は、なぜ私が持っているのですか:
D3D12 ERROR: ID3D12GraphicsCommandList::*: A single command list cannot write to multiple buffers within a particular swapchain. [ STATE_SETTING ERROR #904: COMMAND_LIST_MULTIPLE_SWAPCHAIN_BUFFER_REFERENCES]
このクリア画面コード フラグメントの実行中:
この投稿で大きな混乱を招かないように、ここにすべてのコードを配置するわけではありませんが、どのように見えるかを確認したい場合、またはこの場合に重要になる場合は、私のリポジトリ全体がここにあります: リポジトリ
非常に小さくシンプルで、ほとんどすべてのコードが Core クラスに配置されています。
前もって感謝します!
編集: 2番目の質問の解決策を見つけました。問題はこのループにありました:
}
このコードを次のようにするために、私は 1 つの動きだけを行いました。
}
その後。commandList が正しく閉じられたら、D3D12.dll で AccessViolationException が発生しました。
数時間のインターネット調査の後、「dxcpl.exe」を使用してこのアプリケーションにWARPを強制することで修正しました。HD4000とNvidiaをセカンドカードとしてラップトップで作業しているためだと思いますが、よくわかりません。
c++ - D3D12Device で DuplicateOutput を呼び出すと、E_NOINTERFACE で失敗する
デスクトップ複製 API を利用するアプリケーションを作成しようとしてきましたが、directx の経験がないため、非常に難しいことがわかりました。output1->DuplicateOutput()
E_NOINTERFACEを返す時点で呼び出すまで、すべてが機能しているようです。このエラーは msdn ドキュメントで定義されていないため、問題の診断に苦労しています。このコードは機能すると思いますが、何か不足しているに違いありません。
デバッグ ウィンドウで、 を呼び出したときに 2 つの _com_errors が発生していることに気付きましたoutput1->DuplicateOutput
。
アップデート:
ID3D11Device の代わりに ID3D12Device を使用しているという事実に問題を絞り込みました。このコードが機能するという事実によって例示されるように:
私が理解していないのは、なぜそれが問題なのかということです。デスクトップ複製 API は directx 12 に対応していませんか?
include - #include を置き換えたものDirectX 12で?
本で DirectX 9 を使用しています。例の#include d3dx9tex.h
IntelliSense は、このファイルが存在しないことを示しています。その結果、hResult = D3DXGetImageInfoFromFile(filename.c_str(), &imageInfo);
エラーも表示されます。DirectX 12 をインストールしました。誰でも助けることができますか?
direct3d - dx12 で ID3D12Device から IDXGIDevice または IDXGIDevice1 を取得できない
dx12app から IDXGIDevice1::SetMaximumFrameLatency メソッドを呼び出したいのですが、そのためには、現在の Direct3D 12 デバイスから有効な IDXGIDevice1 を取得する必要があります。インターフェイスを照会すると、E_NOINTERFACE が返されます。
何か不足しているのか、有効な IDXGIDevice1 インターフェイスを取得するために実装する必要がある dxgi ロジックのシーケンスがあるのか わかりません。
ヒントをいただければ幸いです。事前に感謝します。クリップ
c++ - DirectX 12 のカスタム実装は DirectX 11 と同じですか?
「DirectX 11 による実用的なレンダリング」を読んでいて、DirectX の概念を深く理解した上で簡単なエンジンを書きたいと思っています。
しかし、今日、ドライバーのオーバーヘッドの問題を解決する DirectX 12 があり (ハードウェアに近いため)、プライマリ レンダラーとして 12 を使用することを考えています。しかし、私のエンジンは、開発の最後にある種のドライバーのオーバーヘッドになるのでしょうか? ドライバー開発者は私よりずっと賢いと思うので、12 のレンダリングを 11 よりも遅くすることができます。
windows - vsync にロックされた DXGI フリップ モデル
フリップ モデル (DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL または DXGI_SWAP_EFFECT_FLIP_DISCARD) で作成されたスワップ チェーンが VSync (1/60 秒) にロックされていることがわかりました。次のように SyncInterval を 0 に設定して IDXGISwapChain1::Present1 メソッドを呼び出しても機能しません。
DXGI フリップ モデルの VSync を無効にする方法を知っている人はいますか?
windows-10 - Windows 10で開発者モードがアクティブかどうかを検出する方法は?
ID3D12Device::SetStablePowerState
関数呼び出しは、システムで開発者モードがオンになっている場合にのみ使用できます。そうでない場合は、デバイスの削除がトリガーされます。
開発者モードがオンになっているかどうかを検出する API はありますか?これまでのところ、msdn でアプリケーションがクエリを実行できるようにするものは何も見つかりませんでした。
c# - NAudio と DirectX 12
NAudio を使用すると、DirectX ソース エラーが発生します。私は DirectX に関してはそれほど知識がありませんので、いくつかの指針をいただければ幸いです。
DirectX 12 がインストールされた Windows 10 PC で NAudio を初期化するときに受け取るエラーは次のとおりです。
NAudio.Dmo.DmoResampler..ctor System.Runtime.InteropServices.COMException: CLSID {F447B69E-1884-4A7E-8055-346F74D6EDB3} を持つコンポーネントの COM クラス ファクトリの取得は、次のエラーにより失敗しました: 80040154 クラスが登録されていません (Exception from >HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG))。
NAudio.Dmo.DmoResampler..ctor
NAudio.Wave.ResamplerDmoStream..ctor IWaveProvider inputProvider、WaveFormat outputFormat
NAudio.Wave.WasapiOut.Init IWaveProvider waveProvider
Sound.Support.AudioPlaybackEngine..ctor MMDevice デバイス、Int32 sampleRate、Int32 channelCount
Sound.Manager.PerformInitialization
Analyze.ViewModels.ApplicationViewModel.InitSoundManager
いくつかの COM オブジェクトが登録されていないことは明らかです。では、どうすればよいでしょうか?
NAudio を呼び出すコードは次のとおりです。
最初の呼び出しで障害が発生します。
これは、どのプラットフォームの DirectX 11 でも問題なく動作します。
何かご意見は?