vulkan项目移植到Android平台不断闪屏
vulkan项目在Windows平台上运行正常,但是移植到Android平台之后界面会在有画面与黑屏之间快速闪屏
求提供求解决思路!
发现的的可能有用的调试信息:
1、swapChain.imageCount在Windows平台下为3,Android平台下为6。
2、画面对着物体的时候帧数为30帧数左右,画面移开物体帧数为80帧左右,闪屏的速度也随之增加。
开发工具:Android studio
开发环境:Windows 10 (Nvidia GeForce RTX 3050 Laptop)
运行测试设备:小米MI 10s (骁龙870)
一部分代码如下:prepare()
void prepare() override
{
VulkanExampleBase::prepare();
compute.commandBuffers.resize(swapChain.imageCount);
frameObjects.resize(swapChain.imageCount);
timestamps.resize(numTimestamps * frameObjects.size());
computeTimestamps.resize(numComputeTimestamps * frameObjects.size());
for (auto &frame : frameObjects) {
createBaseFrameObjects(frame);
}
loadAssets();
setupQueryPool();
prepareOffscreenFramebuffers();
prepareUniformBuffers();
setupDescriptorPool();
prepareCompute();
setupLayoutsAndDescriptors();
updateCamera(0);
preparePipelines();
// Semaphore for compute & graphics sync
VkSemaphoreCreateInfo semaphoreCreateInfo = vks::initializers::semaphoreCreateInfo();
VK_CHECK_RESULT(vkCreateSemaphore(device, &semaphoreCreateInfo, nullptr, &semaphore));
// Signal the semaphore
VkSubmitInfo submitInfo = vks::initializers::submitInfo();
submitInfo.signalSemaphoreCount = 1;
submitInfo.pSignalSemaphores = &semaphore;
VK_CHECK_RESULT(vkQueueSubmit(queue, 1, &submitInfo, VK_NULL_HANDLE));
VK_CHECK_RESULT(vkQueueWaitIdle(queue));
prepared = true;
}
Windows下正常运行不闪屏:
移植到Android平台下在有画面与黑屏之间快速闪屏: