В качестве продолжения для этого поста я создал проект Qt3D , который является модифицированной версией примера Qt3D .Я запускаю свой проект с Qt 5.13.1 на openSUSE Linux с GCC-7
.В моем проекте я могу использовать задержку между последовательными приведениями лучей.Я сделал несколько неожиданных наблюдений:
В файле main.cpp
, когда я запускаю эту строку, приведение лучей застревает в некоторой точке и не может продолжаться:
ConsecutiveRayCaster *consecutiveRayCaster = new ConsecutiveRayCaster(scene, TimeDelayStatus::NoDelay);
Однако,Когда я запускаю эту строку, даже если для временной задержки установлено значение 0 msec
, все последовательные преобразования лучей выполняются без каких-либо проблем:
ConsecutiveRayCaster *consecutiveRayCaster = new ConsecutiveRayCaster(scene, TimeDelayStatus::SomeDelay, 0 /* milliseconds */);
Этот переключатель имеет значение:
switch (m_timeDelayStatus) {
case NoDelay:
rayCaster->trigger(origin, direction, length);
break;
case SomeDelay:
QTimer::singleShot(m_timeDelayBetweenRayCasts, [rayCaster, origin, direction, length](){ rayCaster->trigger(origin, direction, length); });
break;
}
Интересно, почему?