【发布时间】:2020-04-05 20:19:19
【问题描述】:
我正在尝试反转 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);
}
【问题讨论】: