更新Mac/iOS/Wayland/Android平台的Vulkan Surface初始化
This commit is contained in:
parent
89aba9674b
commit
86e9b1533f
@ -1,28 +1,28 @@
|
|||||||
#include"AndroidWindow.h"
|
#include<hgl/platform/Vulkan.h>
|
||||||
|
#include"AndroidWindow.h"
|
||||||
#include<vulkan/vulkan_android.h>
|
#include<vulkan/vulkan_android.h>
|
||||||
|
|
||||||
namespace hgl
|
namespace hgl
|
||||||
{
|
{
|
||||||
VkSurfaceKHR AndroidWindow::CreateSurface(VkInstance vk_inst)
|
VkSurfaceKHR CreateVulkanSurface(VkInstance vk_inst,Window *w)
|
||||||
{
|
{
|
||||||
PFN_vkCreateAndroidSurfaceKHR CreateAndroidSurfaceKHR;
|
if(vk_inst==VK_NULL_HANDLE)return(VK_NULL_HANDLE);
|
||||||
|
if(!w)return(VK_NULL_HANDLE);
|
||||||
|
|
||||||
GET_INSTANCE_PROC_ADDR(vk_inst,CreateAndroidSurfaceKHR);
|
AndroidWindow *win=(Android *)w;
|
||||||
|
|
||||||
if(!CreateAndroidSurfaceKHR)
|
|
||||||
return(nullptr);
|
|
||||||
|
|
||||||
VkAndroidSurfaceCreateInfoKHR createInfo;
|
VkAndroidSurfaceCreateInfoKHR createInfo;
|
||||||
createInfo.sType = VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR;
|
createInfo.sType = VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR;
|
||||||
createInfo.pNext = nullptr;
|
createInfo.pNext = nullptr;
|
||||||
createInfo.window = AndroidGetApplicationWindow();
|
createInfo.flags = 0;
|
||||||
|
createInfo.window = win->GetWindow();
|
||||||
|
|
||||||
VkSurfaceKHR surface;
|
VkSurfaceKHR surface;
|
||||||
|
|
||||||
VkResult res=CreateAndroidSurfaceKHR(vk_inst,&createInfo,nullptr,&surface);
|
VkResult res=CreateAndroidSurfaceKHR(vk_inst,&createInfo,nullptr,&surface);
|
||||||
|
|
||||||
if(res!=VK_SUCCESS)
|
if(res!=VK_SUCCESS)
|
||||||
return(nullptr);
|
return(VK_NULL_HANDLE);
|
||||||
|
|
||||||
return(surface);
|
return(surface);
|
||||||
}
|
}
|
||||||
|
29
src/Apple/MacVulkan.cpp
Normal file
29
src/Apple/MacVulkan.cpp
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
#include<hgl/platform/Vulkan.h>
|
||||||
|
#include"MacWindow.h"
|
||||||
|
#include<vulkan/vulkan_macos.h>
|
||||||
|
|
||||||
|
namespace hgl
|
||||||
|
{
|
||||||
|
VkSurfaceKHR CreateVulkanSurface(VkInstance vk_inst,Window *w)
|
||||||
|
{
|
||||||
|
if(vk_inst==VK_NULL_HANDLE)return(VK_NULL_HANDLE);
|
||||||
|
if(!w)return(VK_NULL_HANDLE);
|
||||||
|
|
||||||
|
MacWindow *win=(MacWindow *)w;
|
||||||
|
|
||||||
|
VkMacOSSurfaceCreateInfoMVK createInfo;
|
||||||
|
createInfo.sType = VK_STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK;
|
||||||
|
createInfo.pNext = nullptr;
|
||||||
|
createInfo.flags = 0;
|
||||||
|
createInfo.pView = win->GetView();
|
||||||
|
|
||||||
|
VkSurfaceKHR surface;
|
||||||
|
|
||||||
|
VkResult res = vkCreateMacOSSurfaceMVK(vk_inst, &createInfo, nullptr, &surface);
|
||||||
|
|
||||||
|
if (res != VK_SUCCESS)
|
||||||
|
return(VK_NULL_HANDLE);
|
||||||
|
|
||||||
|
return(surface);
|
||||||
|
}
|
||||||
|
}//namespace hgl
|
29
src/Apple/iOSVulkan.cpp
Normal file
29
src/Apple/iOSVulkan.cpp
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
#include<hgl/platform/Vulkan.h>
|
||||||
|
#include"iOSWindow.h"
|
||||||
|
#include<vulkan/vulkan_ios.h>
|
||||||
|
|
||||||
|
namespace hgl
|
||||||
|
{
|
||||||
|
VkSurfaceKHR CreateVulkanSurface(VkInstance vk_inst,Window *w)
|
||||||
|
{
|
||||||
|
if(vk_inst==VK_NULL_HANDLE)return(VK_NULL_HANDLE);
|
||||||
|
if(!w)return(VK_NULL_HANDLE);
|
||||||
|
|
||||||
|
iOSWindow *win=(iOSWindow *)w;
|
||||||
|
|
||||||
|
VkIOSSurfaceCreateInfoMVK createInfo;
|
||||||
|
createInfo.sType = VK_STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK;
|
||||||
|
createInfo.pNext = nullptr;
|
||||||
|
createInfo.flags = 0;
|
||||||
|
createInfo.pView = win->GetView();
|
||||||
|
|
||||||
|
VkSurfaceKHR surface;
|
||||||
|
|
||||||
|
VkResult res = vkCreateIOSSurfaceMVK(vk_inst, &createInfo, nullptr, &surface);
|
||||||
|
|
||||||
|
if (res != VK_SUCCESS)
|
||||||
|
return(VK_NULL_HANDLE);
|
||||||
|
|
||||||
|
return(surface);
|
||||||
|
}
|
||||||
|
}//namespace hgl
|
30
src/UNIX/WaylandVulkan.cpp
Normal file
30
src/UNIX/WaylandVulkan.cpp
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
#include<hgl/platform/Vulkan.h>
|
||||||
|
#include"WaylandWindow.h"
|
||||||
|
#include<vulkan/vulkan_wayland.h>
|
||||||
|
|
||||||
|
namespace hgl
|
||||||
|
{
|
||||||
|
VkSurfaceKHR CreateVulkanSurface(VkInstance vk_inst,Window *w)
|
||||||
|
{
|
||||||
|
if(vk_inst==VK_NULL_HANDLE)return(VK_NULL_HANDLE);
|
||||||
|
if(!w)return(VK_NULL_HANDLE);
|
||||||
|
|
||||||
|
WaylandWindow *win=(WaylandWindow *)w;
|
||||||
|
|
||||||
|
VkWaylandSurfaceCreateInfoKHR createInfo;
|
||||||
|
createInfo.sType = VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR;
|
||||||
|
createInfo.pNext = nullptr;
|
||||||
|
createInfo.flags = 0;
|
||||||
|
createInfo.display = win->GetDisplay();
|
||||||
|
createInfo.surface = win->GetSurface();
|
||||||
|
|
||||||
|
VkSurfaceKHR surface;
|
||||||
|
|
||||||
|
VkResult res = vkCreateWaylandSurfaceKHR(vk_inst, &createInfo, nullptr, &surface);
|
||||||
|
|
||||||
|
if (res != VK_SUCCESS)
|
||||||
|
return(VK_NULL_HANDLE);
|
||||||
|
|
||||||
|
return(surface);
|
||||||
|
}
|
||||||
|
}//namespace hgl
|
Loading…
x
Reference in New Issue
Block a user