草庐IT

python - 为 Windows 构建 Vulkan 工具

我正在尝试构建适用于Windows的Vulkan工具。对于我使用的构建:Windows7x64VisualStudio2012cmake3.6.1python3.5我在windowsbat文件中从命令提示符设置的那个参数,在CMake工作期间我在CMakeError.log中有以下错误:LINK:fatalerrorLNK1104:cannotopenfile'MSVCRTD.lib'.当我打开创建的CompilerIdCXX.vcxproj并尝试构建它时,如果我将路径添加到它正常构建的所需库,我会遇到类似的问题。在CMake文件中,我尝试使用命令link_directories添加库

windows - Vulkan 在 Linux 上找不到物理设备

我一直想使用新的图形APIVulkan,并且已经在Windows7上顺利启动并运行它。但是我无法让Vulkan在Linux上工作。当我尝试运行任何LunarG示例,甚至是我自己的代码时,vkEnumeratePhysicalDevices总是说没有物理设备。这是我的设置:OS:Ubuntu16.04(LTS)[x64]GPU:NvidiaGeforceGT7302GBGDDR5Driver:NVIDIABinarydriver-version364.19fromnvidia-364(opensource)VulkanSDK:LunarGv1.0.17.0[latestversion]我

D3D11和Vulkan共享资源 (一)

很久以前研究过用NV_DX_interop扩展让D3D和OpenGL共享资源,OpenGL在当初设计的时候电脑和操作系统还是个相对比较简单的东西,因此OpenGLAPI设计没有考虑到现在计算机架构的一些特性,比如多核编程和多显卡并发。最近几年出来个Vulkan来接OpenGL的班,所以继续走起研究下D3D11和Vulkan的共享。Vulkan主程序用了vulkantutorial下面的一个教程Combinedimagesampler,这段代码演示了把一个纹理vkImage贴到一个3D的四边形面上.接下来是尝试打通一个D3D11Texture2D和这个vkImage存放图像数据的buffer,这

c++ - 对 vkCreateInstance 的 undefined reference

最终编辑:这是TDM_GCC的编译器/链接器错误。查看答案。编辑:据我所知,这不是重复的。这个问题似乎是一个简单的菜鸟错误,但事实并非如此。我已经使用TDM-GCC-64(Windows的GCC/MinGW工具包)链接到正确的Vulkan库“vulkan-1.lib”,并使用了VulkanSDK示例中的示例代码。本页HowdoIuseVulkanwithMinGW?(R_X86_64_32error)还确认它可以在MinGW上运行,这应该与TDM-GCC-64没有什么不同,因为它使用了MinGW的一部分。如果这是一个简单答案的重复,那么我很抱歉提出这个问题,但到目前为止还没有人解决这个

c++ - Vulkan:转储当前分配的对象?

每当Vulkan中的一个对象被销毁,启用VK_LAYER_LUNARG_object_tracker层,并安装调试报告时,它会报告销毁调用并通过回调给出剩余对象的总数。例如:INFO:[OBJTRACK]:OBJ_STATDestroyVK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXTobj0xcf43130(217totalobjsremain&1VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXTobjs).有没有什么方法可以获取有关仍在分配的对象的信息?编辑:检查object_tracker层(https:

c++ - 如何解决 vulkan 黑屏问题?

我刚刚浏览了LunarG“drawcube”示例并将代码合并到我的引擎中。当我运行时,我得到一个黑屏,因为黑色是清晰的颜色。我可以将透明颜色更改为不同的颜色并查看。但是,我的几何图形根本不渲染。不会生成错误或警告。我的问题是,如何解决此类问题? 最佳答案 RenderDoc与VulkanSDK(至少在Windows上)一起安装,并且是一个框架调试器,类似于PIX/Diagnostics、CodeXL和Nsight。它可以让您了解图形管道如何处理您的数据。您还应该启用validationlayers(特别是VK_LAYER_LUNAR

c++ - 在 C++ (Vulkan) 中处理 C 代码

我正在尝试使用基于Vulkan的C++编写渲染引擎。Vulkan是用C语言编写的,因此它有一些有趣的约定。我在Vulkan应用程序的教程/代码片段中看到的一个反复出现的模式是,大多数代码都在一个非常大的类中。(现在我的vulkan类也已经有大约2000行)。但是为了制作一个合适的渲染引擎,我需要将我的代码划分到一定程度。前面提到的一个有趣的地方是它有一个叫做逻辑设备的东西,它是对显卡的抽象引用。它无处不在,以下列方式创建和分配事物:使用创建信息创建结构创建代码将输出到的变量调用实际的vkCreateSomething或vkAllocateSomething函数,传入逻辑设备,创建信息和

c++ - 使用 typedef 的模板特化

在学习Vulkan时,我在VulkanCookbook中看到了一些代码。在VulkanCookbook中,作者编写了手动导入Vulkan函数和类的代码。好吧,我一直在慢慢地将它转换为LunarG的VulkanSDK,我在64位以下的VkFence中遇到了一个问题,它将类型定义为VkFence_T*,这很好,但在32位中,它的类型定义为uint64_t,这会导致使用类似于以下代码的VkDestroyer的问题#include#includetypedefuint64_tA;typedefuint64_tB;templateclassHandler{voidDestroyObject(Tp

c++ - Vulkan - 我应该什么时候创建新管道?

所以我想在Vulkan中渲染两个独立的网格。我正在涉足纹理,第一个网格使用其中的4个,而第二个使用5个。我正在做索引绘制。为简单起见,每个网格都有自己的统一缓冲区和采样器数组,打包到单独的描述符集中,每个都有一个UBO绑定(bind)和另一个采样器绑定(bind)。为每个网格运行以下代码,其中descriptorSet是与单个网格关联的描述符集。filepaths是特定用途的图像路径vector。std::vectordescriptorWrites;descriptorWrites.resize(2);VkDescriptorBufferInfobufferInfo={};buffe

c++ - 有没有办法在不覆盖实际分配的情况下使用 vulkan 内部分配回调?

当为vkCreate*函数指定一个VkAllocationCallbacks结构时,我想只使用vulkan通知而不覆盖真正的分配器,但我找不到如何做。来自https://www.khronos.org/registry/vulkan/specs/1.1-extensions/man/html/VkAllocationCallbacks.htmlpfnAllocation必须是指向有效用户定义的PFN_vkAllocationFunction的有效指针pfnReallocation必须是指向有效用户定义的PFN_vkReallocationFunction的有效指针pfnFree必须是指