1つのモデルファイルのみを開いたときにプログラムが正常に実行されます。しかし、私は複数のファイル(別のインスタンスとスレッドを別々に)を開こうとすると、私のプログラムがこの場所でクラッシュする可能性があります。私は関数の引数を調べましたが、何の問題もないようでした。 GDBのバックトレースはここにある:vkCmdBindDescriptorSetsを呼び出すときにプログラムがクラッシュする
Thread 83 "VulkanRenderer" received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7ffebfdff700 (LWP 50908)]
0x00007fffe35b7053 in ??() from /usr/lib/nvidia-375/libnvidia-glcore.so.375.39
(gdb) bt
#0 0x00007fffe35b7053 in ??() from /usr/lib/nvidia-375/libnvidia-glcore.so.375.39
#1 0x00007fffe35e1a7e in ??() from /usr/lib/nvidia-375/libnvidia-glcore.so.375.39
#2 0x00007fffe35e3102 in ??() from /usr/lib/nvidia-375/libnvidia-glcore.so.375.39
#3 0x00007ffff78ca4ed in VulkanCommandBuffer::SetDescriptorSet(vk::PipelineBindPoint, VulkanPipelineLayout*, unsigned int, unsigned int, VulkanDescriptorSet**, unsigned int, unsigned int*)() from
は、どのように私はこのクラッシュバグを修正することができますか?
使用しているすべてのオブジェクト(コマンドバッファ、パイプラインレイアウト、ディスクリプタセット)が正しいインスタンスであることを確認してください。 1つのインスタンスで作成されたオブジェクトを別のインスタンスで使用することはできません。 そのため、複数のインスタンスが必要な理由はありますか?ほとんどのプログラムは、Vulkanと完全に無関係で独立した2つのことをしていない限り、1つのインスタンスで問題ありません。 –
@Jesseはい、私は、正しいインスタンスで記述子セットが作成されたと確信しています。 私のプログラムはWindows上でうまく動作しますが、Linux上で実行するとクラッシュする可能性があります。 –