更新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>
|
||||
|
||||
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);
|
||||
|
||||
if(!CreateAndroidSurfaceKHR)
|
||||
return(nullptr);
|
||||
AndroidWindow *win=(Android *)w;
|
||||
|
||||
VkAndroidSurfaceCreateInfoKHR createInfo;
|
||||
createInfo.sType = VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR;
|
||||
createInfo.pNext = nullptr;
|
||||
createInfo.window = AndroidGetApplicationWindow();
|
||||
createInfo.sType = VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR;
|
||||
createInfo.pNext = nullptr;
|
||||
createInfo.flags = 0;
|
||||
createInfo.window = win->GetWindow();
|
||||
|
||||
VkSurfaceKHR surface;
|
||||
|
||||
VkResult res=CreateAndroidSurfaceKHR(vk_inst,&createInfo,nullptr,&surface);
|
||||
|
||||
if(res!=VK_SUCCESS)
|
||||
return(nullptr);
|
||||
return(VK_NULL_HANDLE);
|
||||
|
||||
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