問題タブ [vulkan]

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.

0 投票する
1 に答える
3942 参照

c++ - Vulkan 関数をグローバルにロードする

Vulkan がリリースされたので、(趣味として) Vulkan ベースの GUI を書くことにしました。しかし、私は現在、最初のステップである Vulkan 関数のロードで立ち往生しています。私が見る限り、Vulkan 関数をグローバルにロードする必要がある Nvidia の C++ Vulkan ラッパーを使用しています。

ローカル関数を正常にロードできますが、::vkCreateInstance失敗します:

新しい関数ポインターをグローバルに割り当てようとすると、コンパイル時に 2 つのエラーが発生します (VS2015 を使用してコンパイル):

  • 式は変更可能な左辺値でなければなりません。
  • '=': 左オペランドとして機能します。

vulkan.hヘッダーで宣言された関数プロトタイプがあります。次に例を示します。

これが、関数をグローバルにロードできない原因です。もし私が を定義するとしたらVK_NO_PROTOTYPES、これらのプロトタイプはスキップされ、私はそれらを as などと再宣言することができると信じていPFN_vkCreateInstance vkCreateInstance = nullptr;ます。しかし、これは正しい方法ですか?

それで、私の質問 - Vulkan 関数をグローバルにロードする正しい方法は何ですか?

0 投票する
0 に答える
1257 参照

pipeline - vkCreateGraphicsPipelines からのアクセス違反

Vulkan API のこの部分でアクセス違反が発生しています。

エラーは次のとおりです。

私が知る限り、他のすべての関連コード:

device と pipelineCache はどちらも、Sascha Willems によって作成されたスーパークラスによって設定され、彼が作成したすべての例で機能するため、そこに問題があるとは思いません。ただし、実際には、pipelineCreateInfo または pipelines.billboard がエラーの潜在的な原因として残るだけです。

これらは両方とも、Sascha の例での例と (ほぼ正確に) 同じ方法で処理されているため、ここで途方に暮れています。

編集:問題が見つかりました。シェーダーでサンプラーのバインディング ポイントを指定できませんでした。

0 投票する
0 に答える
636 参照

c# - C# : 構造体のアンマネージ デリゲート、および vulkan API dll をラップすることによるその他のアンマネージの問題

C# プログラムで新しい vulkan API を使用しようとしています。ヘッダー ファイルにしかアクセスできないため、コードをコピーし、安全でないクラスに適用してラップしました。

すべての PFN_xxx は、もともとヘッダー内の関数ポインターであり、直感的にデリゲートとして書き直しました。だから、今のところ、それは働いています。ただし、コードの後半に、dll からインポートされた次の関数があり、エラーが発生します。

エラーはCS0208 で、次のメッセージで説明されていますその中にデリゲートがあるため、管理されています。では、どうすればこの問題を解決できますか? ネット上で満足のいく答えが見つかりませんでした.構造体でデリゲートをアンマネージ関数ポインターとしてマーシャリングしようとしましたが(このように)、うまくいかないようで、コンパイラーはエラーを保持します.


ここに別の問題があります。構造体の固定サイズの配列が定義されている構造体があります。元の宣言は次のとおりです。

そして、私はこのように翻訳しました:

しかし、繰り返しますが、次の関数 import が原因で、同じ問題、有名な CS0208 エラーがあります。

今回のエラーは、固定サイズの配列が原因です。何か案が ?

ご協力ありがとうございました。

0 投票する
1 に答える
2261 参照

memory-management - 誰かが VkPhysicalDeviceMemoryProperties を理解するのを手伝ってくれませんか?

私はそれを理解しようとしていますが、私は少し立ち往生しています。

タイプとヒープの関係は単純ですが、少し奇妙です。(なぜメンバーを与えないVkMemoryHeapVkMemoryTypeですか?)

私はすべてのVkMemoryPropertyFlags意味を理解していると思います。それらはかなり単純に見えます。

しかし、VkMemoryHeap.flagsメンバーはどうですか?どうやら、ゼロ以外の有効な値が 1 つだけありVkMemoryHeapFlagBits.VK_MEMORY_HEAP_DEVICE_LOCAL_BIT、それ自体はそれほど奇妙ではありませんがVkMemoryPropertyFlagBits.VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT、ヒープのメモリ タイプに存在する可能性のある もあります。

メンバーとは何VkMemoryHeap.flagsを意味し、メンバーとどのように関係していVkMemoryType.flagsますか?

0 投票する
1 に答える
318 参照

c++ - 同じ VkPhysicalDevice から 2 つの VkDevices を作成することは有効ですか?

Vulkan API の C++ ラッパーを作成しているので、ドキュメントが実際の API の内容と矛盾しないようにしたいと考えています。

このシナリオは、LunarG 標準検証レイヤーを有効にして実行している場合でも機能します。しかし、現在、正しくないにもかかわらず、検証レイヤーを通過しているものはたくさんあります。だから私の質問は、これを行うことは有効ですか?

0 投票する
1 に答える
1608 参照

c++ - Vulkan DestroyInstance / DestroyDevice with VK_NULL_HANDLE

私は、NULL ハンドルで Destroy / Free を呼び出すことができるという印象を受けました。

2.5.1 有効な使用法

VK_NULL_HANDLE を任意の vkDestroy* または vkFree* コマンドに渡すことは有効であり、これらの値は黙って無視されます。

しかし、vkGetInstanceProcAddrvkGetDeviceProcAddrを使用して関数ポインターを取得するとどうなるでしょうか。私は次のことをしています:

もちろん、元のデバイスに対してデストラクタが呼び出されると、null ハンドルがデバイス固有のvkDestroyDeviceに渡されます。

現在、これにより読み取りアクセス違反が発生しています。これが AMD のせいなのか、LunarG のせいなのか、それとも私のせいなのかわかりません。