能否禁用Vulkan裁剪测试?若不可行的相关启用状态及管线疑问
Vulkan Scissor Test 常见问题解答
能不能禁用Vulkan的scissor test?
没法直接禁用,但可以用“曲线救国”的方式达到同样效果:把scissor矩形设置成完全覆盖当前渲染目标的尺寸,这样scissor就不会裁剪任何像素,实际使用起来和禁用没区别。如果不能禁用,是不是scissor test始终处于启用状态?
没错,只要管线在进行渲染,scissor test就会生效。但只要把scissor设为全屏大小,就不会对渲染结果产生任何裁剪影响,等同于“禁用”。每次渲染不同尺寸的内容,都要创建新管线吗?
完全不用。Vulkan 1.0本身就支持把viewport和scissor设为动态状态:- 创建管线时,在
VkPipelineDynamicStateCreateInfo的dynamicStates数组里加上VK_DYNAMIC_STATE_VIEWPORT和VK_DYNAMIC_STATE_SCISSOR; - 后续渲染不同尺寸内容时,直接调用
vkCmdSetViewport设置对应视口,再用vkCmdSetScissor把裁剪矩形设为当前渲染目标的宽高范围(比如{0, 0, width, height})就行,全程不用重建管线。
- 创建管线时,在
内容的提问来源于stack exchange,提问作者Zebrafish
相关产品推荐
相关产品推荐

