小编Nor*_*r-s的帖子

“VkPipelineColorBlendAttachmentState 包含每个附加帧缓冲区的配置”是什么意思?

我阅读了颜色混合Vulkan 教程。

这个页面说:

第一个结构体 VkPipelineColorBlendAttachmentState 包含每个附加帧缓冲区的配置,第二个结构体 VkPipelineColorBlendStateCreateInfo 包含全局颜色混合设置。在我们的例子中,我们只有一个帧缓冲区

第二个结构引用所有帧缓冲区的结构数组

然而,在帧缓冲区一章中,创建了与 imageView 数量一样多的帧缓冲区。

但与之相关的代码是相同的。

并且每帧缓冲区结构没有与帧缓冲区相关的成员。

如何将颜色混合附件附加到帧缓冲区?

我的猜测是,在记录命令时(即渲染通道开始时),它会通过 VkFramebufferCreateInfo::pAttachments 自动附加,对吗?

或者通过 VkSubpassDescription::pColorAttachments ?

因为规范说:

AttachmentCount 的值必须大于使用此管道的子通道的 VkSubpassDescription::pColorAttachments 或 VkSubpassDescription2::pColorAttachments 中非 VK_ATTACHMENT_UNUSED 的所有颜色附件的索引。

vulkan

4
推荐指数
1
解决办法
651
查看次数

在 Imgui 中,我如何使用 glfw 处理一般鼠标事件?

我使用 glfw 回调函数用鼠标移动相机。

鼠标回调函数为:

void mouse_callback(GLFWwindow *window, double xposIn, double yposIn)
{
    if (is_pressed)
    {
        camera.ProcessMouseMovement((static_cast<float>(yposIn) - prev_mouse.y) / 3.6f, (static_cast<float>(xposIn) - prev_mouse.x) / 3.6f);
        prev_mouse.x = xposIn;
        prev_mouse.y = yposIn;
    }
    cur_mouse.x = xposIn;
    cur_mouse.y = yposIn;
}

void mouse_btn_callback(GLFWwindow *window, int button, int action, int mods)
{
    if (button == GLFW_MOUSE_BUTTON_LEFT && action == GLFW_PRESS)
    {
        prev_mouse.x = cur_mouse.x;
        prev_mouse.y = cur_mouse.y;
        is_pressed = true;
    }
    else
    {
        is_pressed = false;
    }
}
Run Code Online (Sandbox Code Playgroud)

然而,在这种情况下,即使在其他imgui窗口中操作,相机也会移动,如下所示。

我不知道如何处理这个问题。

我应该使用类似的东西将此逻辑放在 IMGUI 的开始和结束之间吗 …

glfw imgui

3
推荐指数
2
解决办法
9303
查看次数

标签 统计

glfw ×1

imgui ×1

vulkan ×1