Registriert: Sa Mai 04, 2002 19:48 Beiträge: 3827 Wohnort: Tespe (nahe Hamburg)
Klingt für mich eher nach einem Problem mit Vulkan selbst bzw. der Grafikkarte. Funktionieren den andere Vulkan-Anwendungen bei Dir? Was für eine Grafikkarte bzw. Treiber hast Du auf dem System drauf? Funktioniert "vulkaninfo" und liefert etwas sinnvolles zurück?
_________________ "Light travels faster than sound. This is why some people appear bright, before you can hear them speak..."
Klingt für mich eher nach einem Problem mit Vulkan selbst bzw. der Grafikkarte. Funktionieren den andere Vulkan-Anwendungen bei Dir?
Es gibt Demo, die ich zum laufen kriegte.
Zitat:
Was für eine Grafikkarte bzw. Treiber hast Du auf dem System drauf? Funktioniert "vulkaninfo" und liefert etwas sinnvolles zurück?
Siehe Anhang
Was ich noch sagen muss, ich hatte mal bei einem funktionierenden C++ Beispiel versucht, diese abzuändern, so da was in der main() stand, als lib zu exportieren. Diese lib habe ich dann versucht mit FPC einzubinden. Aber da gab es dann auch mitten in der Inizialisation einen Speichercrash. Somit war mein Gedanke, das es an einem Speichermodell lag.
Daher könnte ich mir vorstellen, das mit cmake etwas anderes eingestellt wird, als beim direkten Aufruf mit gcc.
PS: Ich habe noch folgendes in der CMakeLists.txt gefunden.
Ich hab es nicht ausprobiert ob es hilft weil ich den code grad nur am Handy anschauen kann, aber evtl. könnte es helfen .. wobei ich bin mir nicht sicher ob da wirklich ein unterschied ist.
Wenn das nicht hilft, dann versuch das struct manuell zu nullen in der Zeile danach:
Ein anderes Problem das ich in dem code sehe ist, es initialisiert den extensions array mit einer größe von 'extensionsCount', aber dann füllt diesen nie.
Später wird dann noch eine extension separat hinzugefügt.
Das bedeutet das vkCreateInstance aufgerufen wird mit z.B. 10 extensions, aber 9 davon sind invalid pointer.
Um es einfach zu testen, rufe mal extensions.clear() auf bevor der zeile wo die einzelne surface extension push_back'ed wird.
Alternativ musst du rausfinden wie du mit SDL die extensions bekommst um sie in den array hinzuzufügen :)
Jetzt läuft es ein wenig weiter und bleibt hier stecken.
Code:
Failed to create Vulkan surface: The specified window isn't a Vulkan window
Aber jetzt habe ich was viel gravierenderes gesehen, auch wen keine Fehler mehr kommen, mit dem Programm wird man niemals ein Dreieck sehen, da hier noch ein ganzer Block fehlt mit Shader, etc. Das ich dies vorher nicht gesehen habe. Ich habe mich wohl viel zu fest auf den Speicherfehler konzentriert.
Das klingt nach einem SDL spezifischem error. Die dokumentation für SDL_Vulkan_CreateSurface sagt dass das Fenster mit dem SDL_WINDOW_VULKAN flag erzeugt sein muss. Aber das wird es soweit ich sehen kann.
Evtl. hat der original author doch absichtlich die VK_KHR_WIN32_SURFACE_EXTENSION_NAME extension manuell hinzugefügt? Vielleicht wird die aus irgendeinem Grund von der SDL Funktion nicht mit returned?
Du kannst versuchen die extensions die du von SDL bekommst manuell in ein eigenes array zu kopieren und dann noch die VK_KHR_WIN32_SURFACE_EXTENSION_NAME mit hinzufügen - evtl. klappt es dann :)
Mitglieder in diesem Forum: 0 Mitglieder und 8 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.