工具的特性_Vulkan和游戏图形(零):开发工具

02ce56da179e03488a02e06427c3aaff.png

最近完成了一个业余项目,用Vulkan实现Light Propagation Volume,效果如题图。鉴于目前关于Vulkan的中文资料太少,于是打算写一系列文章,贡献自己的一份力量。

工欲善其事,必先利其器,因此第一篇文章我想谈谈开发环境的搭建、工具链和调试工具的选择。搭建开发环境很简单,直接去官网下载安装VulkanSDK即可。

与OpenGL不同,Vulkan只接受SPIRV格式的Shader,从GLSL和HLSL都可以通过Shader编译工具编译成SPIRV。有glslang和dxc两种编译器可以选择,前者可以编译GLSL和HLSL到SPIRV,后者只能编译HLSL到SPIRV,由于HLSL的语言设计相比GLSL更易用,因此这里只考虑HLSL编译到SPIRV。另外,VulkanSDK还提供了SPIRV交叉编译工具供我们反编译出SPIRV格式Shader到HLSL,GLSL,MSL格式的Shader,这给调试工作提供了很大的便利。

glslang:这是官方提供的编译器,Vulkan的最新特性都会第一时间在这里实现(device group等),支持SM5.1,更高等级的着色模型依赖开源社区的贡献。

dxc:微软提供的编译器,支持SM6.0(主要添加了Wave Intrinsics),但对Vulkan的特性的支持没有glslang及时。

由于我们暂时不需要用到SM6.0的特性,而Vulkan的一些特性dxc并没有完全支持,因此本项目选择glslang作为首选编译器。

除了Shader编译工具,还需要调试工具,这里推荐如下:

RenderDoc:老牌图形调试工具,支持OpenGL、OpenGLES、Vulkan、DirectX11和DirectX12,开源,跨平台。是本项目的主要调试工具。

NSight Graphics:NV提供的N卡专属工具,可以提供比RenderDoc更详细的信息,然而其最新版本无法在Win10 RS2系统上良好运行,对GTX760M显卡的支持也将逐渐放弃。如果你的电脑配置足够高,推荐使用。

最后放下Repo链接:

hamwj1991/ham​gitee.com
80149863efae4c80421c418acb6677db.png
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这段代码是 `Detector2D` 类的构造函数的定义。构造函数用于创建一个 `Detector2D` 对象,并初始化该对象的成员变量。 以下是对代码的解释: - `Detector2D::Detector2D(float detection_confidence_threshold_,float dynamic_detection_confidence_threshold_)`:这是 `Detector2D` 类的构造函数,它接受两个参数 `detection_confidence_threshold_` 和 `dynamic_detection_confidence_threshold_`,分别表示检测阈值和动态检测阈值。 - `detection_confidence_threshold(detection_confidence_threshold_)`:这是一个成员变量初始化列表,用于将构造函数中的 `detection_confidence_threshold_` 参数的值赋给 `Detector2D` 类的成员变量 `detection_confidence_threshold`。 - `dynamic_detection_confidence_threshold(dynamic_detection_confidence_threshold_)`:这也是一个成员变量初始化列表,用于将构造函数中的 `dynamic_detection_confidence_threshold_` 参数的值赋给 `Detector2D` 类的成员变量 `dynamic_detection_confidence_threshold`。 - `detect_net_ptr = new(ncnn::Net);`:创建一个指向 `ncnn::Net` 类型对象的指针 `detect_net_ptr`。 - `net_in_ptr = new(ncnn::Mat);`:创建一个指向 `ncnn::Mat` 类型对象的指针 `net_in_ptr`。 - `detect_net_ptr->opt.use_vulkan_compute = true;`:设置 `detect_net_ptr` 指针所指向的对象的选项,启用使用 Vulkan 进行计算。 - `detect_net_ptr->load_param("./Thirdparty/ncnn_model/mobilenetv3_ssdlite_voc.param");`:加载模型参数文件。 - `detect_net_ptr->load_model("./Thirdparty/ncnn_model/mobilenetv3_ssdlite_voc.bin");`:加载模型文件。 - `mbNewImageFlag=false;`:将成员变量 `mbNewImageFlag` 的值设置为 `false`。 通过构造函数,可以创建一个 `Detector2D` 对象,并初始化该对象的成员变量。还可以加载模型文件和参数文件,并设置一些选项来配置检测器的行为。最后,将 `mbNewImageFlag` 设置为 `false`,表示没有新的图像可供检测。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值