added few files of the Vulkan support.

This commit is contained in:
HuYingzhuo(hugo/hyzboy) 2022-07-11 21:45:53 +08:00
parent dc118dec7d
commit 41b9f13270
4 changed files with 68 additions and 3 deletions

View File

@ -0,0 +1,25 @@
#pragma once
#include<QWindow>
namespace hgl
{
class QtVulkanWindow:public QWindow
{
public:
bool event(QEvent* e) override;
void exposeEvent(QExposeEvent*) override;
void hideEvent(QHideEvent* ev) override;
void keyPressEvent(QKeyEvent*) override;
void keyReleaseEvent(QKeyEvent*) override;
void mouseMoveEvent(QMouseEvent*) override;
void mousePressEvent(QMouseEvent*) override;
void mouseReleaseEvent(QMouseEvent*) override;
void resizeEvent(QResizeEvent*) override;
void moveEvent(QMoveEvent*) override;
void wheelEvent(QWheelEvent*) override;
};//public QtVulkanWindow
}//namespace hgl

View File

@ -1,4 +1,4 @@
find_package(Qt5 ${QT_MIN_VERSION} CONFIG REQUIRED COMPONENTS Gui Widgets Svg Xml) find_package(Qt5 ${QT_MIN_VERSION} CONFIG REQUIRED COMPONENTS Gui Widgets Svg Xml VulkanSupport)
SET(CMQT_INCLUDE_PATH ${CMQT_ROOT_INCLUDE_PATH}/hgl/qt) SET(CMQT_INCLUDE_PATH ${CMQT_ROOT_INCLUDE_PATH}/hgl/qt)
@ -20,6 +20,12 @@ SET(CMQT_IMAGE_FILES image/SVGPixmap.cpp)
SOURCE_GROUP("Image" FILES ${CMQT_IMAGE_FILES}) SOURCE_GROUP("Image" FILES ${CMQT_IMAGE_FILES})
add_cm_library(CMQT "CM" ${CMQT_DIALOG_FILES} ${CMQT_IMAGE_FILES}) SET(CMQT_Vulkan_FILES ${CMQT_INCLUDE_PATH}/QtVulkanWindow.h
vulkan/QtVulkanWindow.cpp
vulkan/QtVulkanSurface.cpp)
target_link_libraries(CMQT PUBLIC Qt5::Core Qt5::Gui Qt5::Widgets Qt5::Svg Qt5::Xml) SOURCE_GROUP("Vulkan" FILES ${CMQT_Vulkan_FILES})
add_cm_library(CMQT "CM" ${CMQT_DIALOG_FILES} ${CMQT_IMAGE_FILES} ${CMQT_Vulkan_FILES})
target_link_libraries(CMQT PUBLIC Qt5::Core Qt5::Gui Qt5::Widgets Qt5::Svg Qt5::Xml Qt5::VulkanSupport)

View File

@ -0,0 +1,33 @@
#include<QWindow>
#include<QVulkanInstance>
namespace hgl
{
class Window;
namespace
{
QVulkanInstance *qt_vulkan_instance=nullptr;
}
VkSurfaceKHR CreateVulkanSurface(VkInstance vk_inst,Window *w)
{
if(vk_inst==VK_NULL_HANDLE)return(VK_NULL_HANDLE);
if(!w)return(VK_NULL_HANDLE);
QWindow *qwin=(QWindow *)w;
qt_vulkan_instance=new QVulkanInstance();
qt_vulkan_instance->setVkInstance(vk_inst);
if(qt_vulkan_instance->create())
{
QVulkanInstance::surfaceForWindow(qwin);
}
else
{
delete qt_vulkan_instance;
qt_vulkan_instance=nullptr;
}
}
}

View File

@ -0,0 +1 @@
#include<hgl/qt/QtVulkanWindow.h>