xo-imgui: restore opengl + vulkan builds
This commit is contained in:
parent
d817c649aa
commit
d9aa1ddc81
15 changed files with 202 additions and 194 deletions
|
|
@ -2,7 +2,9 @@
|
|||
|
||||
find_path(IMGUI_INCLUDE_DIR
|
||||
NAMES imgui/imgui.h
|
||||
DOC "path to imgui header")
|
||||
DOC "path to imgui header"
|
||||
HINTS ${PROJECT_SOURCE_DIR}/include
|
||||
)
|
||||
if (IMGUI_INCLUDE_DIR)
|
||||
message(STATUS
|
||||
"found imgui/imgui.h in IMGUI_INCLUDE_DIR=[${IMGUI_INCLUDE_DIR}]")
|
||||
|
|
@ -10,10 +12,11 @@ else()
|
|||
message(FATAL_ERROR "unable to find imgui.h")
|
||||
endif()
|
||||
|
||||
set(SELF_LIB xo_imgui)
|
||||
set(SELF_SRCS
|
||||
VulkanApp.cpp
|
||||
ImRect.cpp
|
||||
if (XO_ENABLE_VULKAN)
|
||||
set(SELF_LIB xo_imgui)
|
||||
set(SELF_SRCS
|
||||
VulkanApp.cpp
|
||||
ImRect.cpp
|
||||
${IMGUI_INCLUDE_DIR}/imgui/imgui.cpp
|
||||
${IMGUI_INCLUDE_DIR}/imgui/imgui_demo.cpp
|
||||
${IMGUI_INCLUDE_DIR}/imgui/imgui_draw.cpp
|
||||
|
|
@ -22,21 +25,23 @@ set(SELF_SRCS
|
|||
${IMGUI_INCLUDE_DIR}/imgui/backends/imgui_impl_sdl2.cpp
|
||||
#${IMGUI_INCLUDE_DIR}/imgui/backends/imgui_impl_opengl3.cpp
|
||||
#${IMGUI_INCLUDE_DIR}/imgui/backends/imgui_impl_glfw.cpp
|
||||
${IMGUI_INCLUDE_DIR}/imgui/backends/imgui_impl_vulkan.cpp)
|
||||
${IMGUI_INCLUDE_DIR}/imgui/backends/imgui_impl_vulkan.cpp
|
||||
)
|
||||
|
||||
xo_add_shared_library4(
|
||||
${SELF_LIB}
|
||||
${PROJECT_NAME}Targets ${PROJECT_VERSION} 1 ${SELF_SRCS}
|
||||
)
|
||||
xo_add_shared_library4(
|
||||
${SELF_LIB}
|
||||
${PROJECT_NAME}Targets ${PROJECT_VERSION} 1 ${SELF_SRCS}
|
||||
)
|
||||
|
||||
find_package(Vulkan REQUIRED)
|
||||
target_link_libraries(${SELF_LIB} PUBLIC Vulkan::Vulkan)
|
||||
find_package(Vulkan REQUIRED)
|
||||
target_link_libraries(${SELF_LIB} PUBLIC Vulkan::Vulkan)
|
||||
|
||||
xo_external_pkgconfig_dependency(${SELF_LIB} SDL2 sdl2)
|
||||
xo_external_pkgconfig_dependency(${SELF_LIB} SDL2 sdl2)
|
||||
|
||||
# NOTE: would prefer to use just IMGUI_INCLUDE_DIR,
|
||||
# but imgui/backends/ .h files don't quote the imgui/ stem
|
||||
#
|
||||
target_include_directories(${SELF_LIB} PUBLIC ${IMGUI_INCLUDE_DIR}/imgui)
|
||||
# NOTE: would prefer to use just IMGUI_INCLUDE_DIR,
|
||||
# but imgui/backends/ .h files don't quote the imgui/ stem
|
||||
#
|
||||
target_include_directories(${SELF_LIB} PUBLIC ${IMGUI_INCLUDE_DIR}/imgui)
|
||||
|
||||
xo_dependency(${SELF_LIB} indentlog)
|
||||
xo_dependency(${SELF_LIB} indentlog)
|
||||
endif()
|
||||
|
|
|
|||
|
|
@ -6,6 +6,10 @@
|
|||
#include <backends/imgui_impl_sdl2.h>
|
||||
#include <backends/imgui_impl_vulkan.h>
|
||||
#include <cstdint>
|
||||
#include <vulkan/vulkan_core.h>
|
||||
#ifdef __linux__
|
||||
# include <vulkan/vulkan_wayland.h>
|
||||
#endif
|
||||
|
||||
using xo::scope;
|
||||
using xo::xtag;
|
||||
|
|
@ -38,6 +42,12 @@ VulkanApp::run() {
|
|||
|
||||
void
|
||||
VulkanApp::init_window() {
|
||||
#ifdef __linux__
|
||||
// on linux (at least for wsl2) force x11 with xlib instead of xcb
|
||||
// alternatively could set env var SDL_VIDEODRIVER
|
||||
SDL_SetHint(SDL_HINT_VIDEODRIVER, "x11");
|
||||
#endif
|
||||
|
||||
if (SDL_Init(SDL_INIT_VIDEO) != 0) {
|
||||
throw std::runtime_error("Failed to initialize SDL!");
|
||||
}
|
||||
|
|
@ -97,8 +107,21 @@ VulkanApp::create_instance()
|
|||
throw std::runtime_error("Failed to get SDL Vulkan extensions!");
|
||||
}
|
||||
|
||||
#ifdef __APPLE__
|
||||
// Add portability extension for MoltenVK (macOS)
|
||||
extensions.push_back(VK_KHR_PORTABILITY_ENUMERATION_EXTENSION_NAME);
|
||||
// claude.ai says:
|
||||
// extensions.push_back("VK_KHR_get_physical_device_properties2")
|
||||
#endif
|
||||
|
||||
#ifdef __linux__
|
||||
extensions.push_back(VK_KHR_SURFACE_EXTENSION_NAME);
|
||||
// native wayland drivers. or use VK_KHR_XLIB_SURFACE_EXTENSION_NAME here
|
||||
//extensions.push_back(VK_KHR_XLIB_SURFACE_EXTENSION_NAME);
|
||||
//extensions.push_back(VK_KHR_WAYLAND_SURFACE_EXTENSION_NAME);
|
||||
#endif
|
||||
|
||||
extensions.push_back(VK_EXT_DEBUG_UTILS_EXTENSION_NAME);
|
||||
|
||||
createInfo.enabledExtensionCount = extensions.size();
|
||||
createInfo.ppEnabledExtensionNames = extensions.data();
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue