如何在Erupted-V2中定义vkCreateXcbSurfaceKHR?

问题描述

我正在尝试将XCB与Vulkan绑定Erupted-V2结合使用,但出现错误:

source/gfxdevicevulkan.d(231,24): Error: undefined identifier vkCreateXcbSurfaceKHR

这是我的dub.json:

{
"name": "dvulkanbase","targetType": "executable","description": "Vulkan boilerplate","license": "MIT","configurations": [
    {
        "name": "linux","platforms": ["linux"],"versions": ["VK_USE_PLATFORM_XCB_KHR"],"libs": [ "X11","Xi","Xrandr","pthread","Xxf86vm","GL","GLU","Xinerama","Xcursor" ],"dependencies": {
        "bindbc-sdl": "~>0.19.0","erupted_v2": ">=1.1.71","xlib-d": "~>0.1.1","xcb-d": "~>2.1.0"
      }
    },{
        "name": "windows","platforms": ["windows"],"versions": ["VK_USE_PLATFORM_WIN32_KHR"],"erupted_v2": ">=1.1.71"
      }
    }
]
}

这是我在使用vkCreateXcbSurfaceKHR的文件中导入的内容:

import core.stdc.string;
import erupted;
import erupted.vulkan_lib_loader;
import matrix4x4;
import std.conv;
import std.exception;
import std.stdio;
version(linux)
{
    import X11.Xlib_xcb;
    public import xcb.xcb;
    import erupted.platform_extensions;
    mixin Platform_Extensions!VK_USE_PLATFORM_XCB_KHR;
}

这是调用代码的相关部分:

class GfxDeviceVulkan
{

   this( int width,int height,void* windowHandleOrWindow,void* display,uint window )
    {
        loadGlobalLevelFunctions();
        VkApplicationInfo appinfo;
        appinfo.pApplicationName = "VulkanBase";
        appinfo.apiVersion = VK_MAKE_VERSION( 1,2 );

        version(linux)
        {
            const(char*)[3] extensionNames = [
                                        "VK_KHR_surface","VK_KHR_xcb_surface","VK_EXT_debug_utils",];
        }
    
        uint extensionCount = 0;
        vkEnumerateInstanceExtensionProperties( null,&extensionCount,null );

        auto extensionProps = new VkExtensionProperties[]( extensionCount );
        vkEnumerateInstanceExtensionProperties( null,extensionProps.ptr );
    
        uint layerCount = 0;
        vkEnumerateInstanceLayerProperties( &layerCount,null );

        auto layerProps = new VkLayerProperties[]( layerCount );
        vkEnumerateInstanceLayerProperties( &layerCount,layerProps.ptr );

        const(char*)[1] validationLayers = ["VK_LAYER_KHRONOS_validation"];
    
        VkInstanceCreateInfo createinfo;
        createinfo.sType = VkStructureType.VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO;
        createinfo.pApplicationInfo = &appinfo;
        createinfo.enabledExtensionCount = isDebug ? cast(uint)extensionNames.length : 2;
        createinfo.ppEnabledExtensionNames = extensionNames.ptr;
        createinfo.enabledLayerCount = isDebug ? validationLayers.length : 0;
        createinfo.ppEnabledLayerNames = isDebug ? validationLayers.ptr : null;

        enforceVk( vkCreateInstance( &createinfo,null,&instance ) );

        loadInstanceLevelFunctions( instance );

        version(linux)
        {
            auto xcbInfo = VkXcbSurfaceCreateInfoKHR(
          VkStructureType.VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR,XGetXCBConnection( cast(xcb_connection_t*)display ),window
                );
            enforceVk( vkCreateXcbSurfaceKHR( instance,&xcbInfo,&surface ) );
        }

如何解决该错误?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...