在Vulkan中渲染具有不同纹理,顶点缓冲区和统一值的多个对象

时间:2018-09-02 01:21:33

标签: vulkan

我的背景是OpenGL,我正在尝试学习Vulkan。我在设置类时遇到了一些麻烦,因此可以渲染具有不同纹理,顶点缓冲区和UBO值的多个对象。我遇到了一个问题,其中绘制了我的两个图像,但它们闪烁并交替显示。我想这一定是由于在抽奖电话之后出现了图像。有没有一种方法可以延迟图像的显示?还是在呈现之前将不同的图像合并在一起?我的代码可以在这里找到,我希望它足以使某人了解我要做什么:https://gitlab.com/cwink/Ingin/blob/master/ingin.cpp

谢谢!

1 个答案:

答案 0 :(得分:1)

您每帧呼叫render两次。并且render调用vkQueuePresentKHR,因此显然您的两个渲染是交替的。

您只需延迟vkQueuePresentKHR通话就可以延迟演示。假设您要显示每个图像约1 s。您可以在每个std::this_thread::sleep_for (std::chrono::seconds(1));调用之后简单地render。 (可能不是最好的方法,而只是想知道问题出在哪里。)

vkQueuePresentKHR不会为您执行任何形式的“合并”。通常,您只需先将它们绘制到同一交换链VkImage中,然后将其显示一次即可“合并图像”。

相关问题