Nsight Graphics 和 RenderDoc 无法跟踪应用程序
Nsight Graphics and RenderDoc cannot trace application
我一直在写 Vulkan 渲染器。我在屏幕上看到的最终输出只是清晰的颜色,随着时间的推移而变化,但没有几何图形。即使打开了所有可能的验证,我也没有收到任何错误/警告/最佳实践/性能提示等,除了最佳实践警告“调用 vkQueueSubmit 时您正在使用 VK_PIPELINE_STAGE_ALL_COMMANDS_BIT”。实际上不确定我是否使用了所有可能的验证,但我有 Vulkan 配置 运行ning 并勾选了“VK_LAYER_KHRONOS_validation”下的所有复选框,之后出现了 vkQueueSubmit 提示
在摸索了几个小时后,我决定研究使用 RenderDoc,我可以很好地启动应用程序,但是 RenderDoc 显示“连接状态:已建立,Api:none”并且我无法捕获帧。
我很困惑我想我会研究使用 NSight Graphics 只是为了发现同样的问题:我可以 运行 应用程序但是它说“检测到可附加的进程。状态:没有图形 API” .我在某处读到我可以先启动进程,然后使用附加功能附加到 运行ning 进程,不幸的是,结果相同 运行ning
我读到当没有正确呈现每一帧时可能会出现问题,这就是我随着时间的推移更改清晰颜色以确保我实际呈现每一帧的原因,我可以确认是这种情况
我现在很迷茫,有没有人有过类似的经历?关于如何使 RenderDoc/NSight Graphics 正常工作,有什么想法吗?他们都没有在日志中显示任何内容,因为我猜他们只是假设该过程不使用任何图形 api,因此不会被追踪。
我也很感谢关于为什么我看不到我的几何图形的想法,但我知道这从你这边更难猜到,还有一些注意事项:我什至强制关闭了深度和模板测试,尽管顶点应该是COUNTER_CLOCKWISE 我还检查了 CLOCKWISE 以确保关闭面部剔除模式,检查颜色写入掩码和 rasterizerDiscard,甚至设置 gl_Position 以完全忽略顶点位置和变换矩阵并使用一些取而代之的是 -1 到 1 范围内的随机值,当我听到“只有清晰的颜色,但没有错误”但一切都无济于事时,基本上我想到的一切都无济于事
以防有任何帮助:我在 Win11 上使用 RTX3070 或 Intel UHD 770,结果相同
小更新:
使用 Vulkan Configurator,我可以强制打开 VK_LAYER_RENDERDOC_capture 层,之后当 运行 应用程序时,我可以看到叠加层,在按下 F12 后读取它捕获了一帧。但是,RenderDoc 仍然找不到此过程的图形 api,我不知道如何访问该捕获
然后我强制打开 VK_LAYER_LUNARG_api_dump 并将其转储到我检查过的 html 中,但我仍然看不出任何错误。我特别仔细地查看了 Pipeline 和 Renderpass 创建调用。
这让我想到它会是任何统一/顶点缓冲区内容/偏移量或其他任何内容,所以我删除了其中的任何内容,使用硬编码的顶点位置和片段输出,但我仍然只能在屏幕上看到最终图像中的清晰颜色。
谢谢
也许让我感到困惑应该开始使用我当前的相机宽度和高度将我公开的相对视口转换为绝对值,即将 (0,0,1920,1080) 提供给 Vulkan 而不是 (0,0,1, 1).
Holymoly 真是棒极了
我一直在写 Vulkan 渲染器。我在屏幕上看到的最终输出只是清晰的颜色,随着时间的推移而变化,但没有几何图形。即使打开了所有可能的验证,我也没有收到任何错误/警告/最佳实践/性能提示等,除了最佳实践警告“调用 vkQueueSubmit 时您正在使用 VK_PIPELINE_STAGE_ALL_COMMANDS_BIT”。实际上不确定我是否使用了所有可能的验证,但我有 Vulkan 配置 运行ning 并勾选了“VK_LAYER_KHRONOS_validation”下的所有复选框,之后出现了 vkQueueSubmit 提示
在摸索了几个小时后,我决定研究使用 RenderDoc,我可以很好地启动应用程序,但是 RenderDoc 显示“连接状态:已建立,Api:none”并且我无法捕获帧。
我很困惑我想我会研究使用 NSight Graphics 只是为了发现同样的问题:我可以 运行 应用程序但是它说“检测到可附加的进程。状态:没有图形 API” .我在某处读到我可以先启动进程,然后使用附加功能附加到 运行ning 进程,不幸的是,结果相同 运行ning
我读到当没有正确呈现每一帧时可能会出现问题,这就是我随着时间的推移更改清晰颜色以确保我实际呈现每一帧的原因,我可以确认是这种情况
我现在很迷茫,有没有人有过类似的经历?关于如何使 RenderDoc/NSight Graphics 正常工作,有什么想法吗?他们都没有在日志中显示任何内容,因为我猜他们只是假设该过程不使用任何图形 api,因此不会被追踪。
我也很感谢关于为什么我看不到我的几何图形的想法,但我知道这从你这边更难猜到,还有一些注意事项:我什至强制关闭了深度和模板测试,尽管顶点应该是COUNTER_CLOCKWISE 我还检查了 CLOCKWISE 以确保关闭面部剔除模式,检查颜色写入掩码和 rasterizerDiscard,甚至设置 gl_Position 以完全忽略顶点位置和变换矩阵并使用一些取而代之的是 -1 到 1 范围内的随机值,当我听到“只有清晰的颜色,但没有错误”但一切都无济于事时,基本上我想到的一切都无济于事
以防有任何帮助:我在 Win11 上使用 RTX3070 或 Intel UHD 770,结果相同
小更新: 使用 Vulkan Configurator,我可以强制打开 VK_LAYER_RENDERDOC_capture 层,之后当 运行 应用程序时,我可以看到叠加层,在按下 F12 后读取它捕获了一帧。但是,RenderDoc 仍然找不到此过程的图形 api,我不知道如何访问该捕获
然后我强制打开 VK_LAYER_LUNARG_api_dump 并将其转储到我检查过的 html 中,但我仍然看不出任何错误。我特别仔细地查看了 Pipeline 和 Renderpass 创建调用。 这让我想到它会是任何统一/顶点缓冲区内容/偏移量或其他任何内容,所以我删除了其中的任何内容,使用硬编码的顶点位置和片段输出,但我仍然只能在屏幕上看到最终图像中的清晰颜色。
谢谢
也许让我感到困惑应该开始使用我当前的相机宽度和高度将我公开的相对视口转换为绝对值,即将 (0,0,1920,1080) 提供给 Vulkan 而不是 (0,0,1, 1).
Holymoly 真是棒极了