看 Vulkan Sample 的话,创建 PhysicalDevice 和 Surface 的包装思路是
void VulkanRenderer::SelectPhysicalDeviceAndSurface()
{
vk::raii::PhysicalDevices gpus(*m_vulkan_instance);
bool found_graphics_queue_index = false;
for (size_t i = 0; i < gpus.size() && !found_graphics_queue_index; i++)
{
std::vector<vk::QueueFamilyProperties> queue_family_properties = gpus[i].getQueueFamilyProperties();
if (queue_family_properties.empty())
{
throw std::runtime_error("No queue family found.");
}
VkSurfaceKHR surface = m_window.lock()->CreateSurface((**m_vulkan_instance));
if (!surface)
{
throw std::runtime_err

文章讲述了VulkanRenderer中如何选择支持图形和演示的物理设备,包括通过找到第一个支持队列和对每个设备按支持的扩展和特性评分的方法。
最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



