![](/img/trans.png)
[英]Using a QGLWidget as the viewport for QGraphicsView results in black screen
[英]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 可能是您的清晰颜色,这意味着您的几何图形要么被丢弃,要么在视口之外。
如果您在 Vulkan 1.0 中翻转视口,您还需要启用VK_KHR_maintenance1
(在 Vulkan 1.1 中。这被提升为核心)。
如果启用了剔除,则需要翻转剔除模式或管道光栅化 state 的正面信息。 否则,您的几何图形将被丢弃,因为它在翻转视口后背离屏幕。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.