繁体   English   中英

Vulkan 将视口结果翻转为黑屏

[英]Vulkan flipping viewport result to a black screen

我正在尝试反转 vulkan 的视口而不是反转其他所有内容,但这会导致黑屏。 黑屏看起来像是来自我的一个着色器。

反转视口的代码:

VkRect2D renderArea = {};
renderArea.offset = {0, 0};
renderArea.extent = {
    static_cast<uint32_t>(renderStage.GetSize().x),
    static_cast<uint32_t>(renderStage.GetSize().y)
};

VkViewport viewport;
viewport.x = 0.0f;
viewport.y = static_cast<float>(renderArea.extent.height); 
viewport.width = static_cast<float>(renderArea.extent.width);
viewport.height = -static_cast<float>(renderArea.extent.height);
viewport.minDepth = 0.0f;
viewport.maxDepth = 1.0f;
vkCmdSetViewport(
    *commandBuffers_[swapchain_->GetActiveImageIndex()],
    0,
    1,
    &viewport);

在渲染文档中,我看到内容被绘制到帧缓冲区,但在特定着色器之后的某一时刻,一切都是黑色的(如果我不进行反转,它就可以正常工作)。 顶点着色器(延迟渲染中的光通道)

void main() 
{
    outUV = vec2((gl_VertexIndex << 1) & 2, gl_VertexIndex & 2);
    gl_Position = vec4(outUV * 2.0f - 1.0f, 0.0f, 1.0f);
}

通行证的输入在此处输入图像描述

通的Output 在此处输入图像描述

黑色 output 可能是您的清晰颜色,这意味着您的几何图形要么被丢弃,要么在视口之外。

如果您在 Vulkan 1.0 中翻转视口,您还需要启用VK_KHR_maintenance1 (在 Vulkan 1.1 中。这被提升为核心)。

如果启用了剔除,则需要翻转剔除模式或管道光栅化 state 的正面信息。 否则,您的几何图形将被丢弃,因为它在翻转视口后背离屏幕。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM