4

私は現在、自分のエンジンを Vulkan に適応させており、OpenGL で既に持っていた透明なウィンドウを再実装したいと考えています。

compositeAlpha私がする必要があるのは、正しいカラー形式 (アルファ チャネル付き) を選択し、プロパティをに設定することだけだと思いVkSwapchainCreateInfoKHRましたVK_COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR

ただし、ウィンドウを完全に透明な色でクリアしても、期待どおりの結果が得られません。完全に不透明です。

もちろん、OpenGL を使用して以来変更されていないウィンドウ システムはそれをサポートしており、レンダリングを無効にすると、ウィンドウの想定される位置をクリックすることもできません。これは、そこにあることを示しています。

これを機能させるために他に必要な変更はありますか?

いくつかの情報

画像フォーマットはで、 Sascha Willems の例VK_FORMAT_B8G8R8A8_UNORMに見られる vulkan セットアップを方向付けました。

4

2 に答える 2

6

その機能は (ほとんどの他の機能と同様に) サポートされているかどうかを使用する前に照会する必要があります。それ以外の場合は無効です。

この特定の機能は as によって照会さvkGetPhysicalDeviceSurfaceCapabilitiesKHRpSurfaceCapabilities->supportedCompositeAlphaます。これはビットフィールド/フラグ セットであるため、複数のモードをサポートしたり、まったくサポートしたりできません。

結果/機能のサポートは、VkSurface の影響を受ける可能性があると思います。つまり、プラットフォーム ウィンドウの作成方法です。または、ドライバーのメーカーがまだそれを実装していないだけかもしれません (その機能がサポートされているにもかかわらず)。

以前は OGL で機能していたので、後者の可能性が高くなります。しかし、プラットフォーム ウィンドウの作成パラメータをいじっても問題ありません...

于 2016-07-09T16:02:04.217 に答える