2016-07-15 4 views
2

Ich versuche vkCreateImage mit einem 3-Komponenten-Bild zu verwenden (rgb). Aber alle die rgb Formate geben:Vulkan vkCreateImage mit 3 Komponenten

vkCreateImage format parameter (VK_FORMAT_R8G8B8_xxxx) is an unsupported format

Dies bedeutet, dass ich die Daten im Speicher neu zu gestalten haben? Fügen Sie also nach jeweils 3 ein leeres Byte hinzu und laden Sie es dann als RGBA? Ich habe auch bemerkt R8 und R8G8 Formate funktionieren, so würde ich raten, der einzige Grund, RGB wird nicht unterstützt, weil 3 keine Macht von zwei ist.

Bevor ich diese Umformung der Daten mache, würde ich gerne wissen, dass dies der einzige Weg ist, weil es nicht sehr gut für die Leistung ist und vielleicht ein Offset- oder Padding-Wert, der beim Laden hilft Die RGB Daten in ein RGBA Format. Kann jemand bestätigen, dass das Umformen in RGBA ein notwendiger Schritt ist, um RGB Formate zu laden (wenn auch mit 33% Overhead)?

Vielen Dank im Voraus.

Antwort

1

Zuerst sollten Sie überprüfen, um zu sehen, was vor unterstützt Sie versuchen, ein Bild zu erstellen. Sie sollten sich nicht auf Validierungsebenen verlassen, um Sie zu stoppen. Das ist nur eine Debug-Hilfe, um etwas zu fangen, wenn Sie vergessen haben, zu überprüfen. Was unterstützt wird und was nicht, ist dynamisch, nicht statisch. Es basiert auf Ihrer Implementierung. Sie müssen also bei jedem Start Ihrer Anwendung nachfragen, ob die von Ihnen gewünschten Formate verfügbar sind.

Und wenn sie nicht sind, dann müssen Sie entsprechend planen.

Zweitens, wenn Ihre Implementierung keine 3-Kanal-Formate unterstützt, müssen Sie sie mit einem 4-Kanal-Format emulieren. Sie müssen Ihre Daten an Ihr neues Format anpassen.

Wenn Sie das nicht mögen, bin ich sicher, dass es Bildbearbeitungsprogramme gibt, mit denen Sie Ihr Bild laden können, fügen Sie ein undurchsichtiges Alpha von 1.0 hinzu und speichern Sie es erneut.

+0

Und ein typischer Scheck für Unterstützung könnte sein:? https://i.gyazo.com/7f56cdef5023147ac7bacf7264ead096.png (vorausgesetzt, Sie möchten eine optimale Kachelung) – Aedoro

Verwandte Themen