有人可以帮助我了解 vulkan 中的视口、剪刀、渲染区域、帧缓冲区大小、附件大小吗?

Can someone help me understand viewport, scissor, renderarea, framebuffer size, attachment size in vulkan?

正如问题标题,我对这些东西有点困惑,尤其是视口和渲染区域。 AFAIK,视口在VS阶段使用,而渲染区域在FS阶段使用,如果视口小于渲染区域,会发生什么?

谢谢。

视口指定如何将规范化的设备坐标转换为帧缓冲区的像素坐标。

剪刀是您可以渲染的区域,这在这方面类似于视口,但更改剪刀矩形不会影响坐标。

RenderArea 是将由 renderpass 更改的帧缓冲区区域。这让实现知道不会更改整个帧缓冲区,并使其有机会进行优化,例如通过在基于图块的体系结构中不包含某些图块来进行优化。应用程序有责任在该区域之外不进行渲染,例如确保剪刀矩形始终完全包含在渲染区域内。

帧缓冲区大小和附件大小相关,因为附件必须至少与帧缓冲区一样大。

if viewport is small than render area, what will happen?

没什么特别的,渲染命令将在视口内渲染。反过来(渲染区域小于视口)将导致帧缓冲区中出现未定义的值。