У меня есть следующий код
static unsigned long long GetCurrentTimeInNanoseconds()
{
timespec t;
clock_gettime(CLOCK_MONOTONIC, &t);
return (unsigned long long)(t.tv_sec*1000000000ULL) + (unsigned long long)t.tv_nsec;
}
Когда я использую это так:
unsigned long long current = GetCurrentTimeInNanoseconds();
usleep(5000);
LOG_MESSAGE1( "sleep: %llu ns", GetCurrentTimeInNanoseconds() - current);
Это печатает это:
"сон: 5126953 нс"
Но если я буду использовать это так:
current = GetCurrentTimeInNanoseconds();
glFinish();
LOG_MESSAGE1( "finish: %llu ns", GetCurrentTimeInNanoseconds() - current);
Тогда он печатает:
"финиш: 0 нс"
glFinish - это блокирующий вызов в opengl ... и когда я изменяю эту строку кода, мое приложение значительно замедляется. Так как же это может занять 0ns, чтобы сделать glFinish на Android? Это может быть нет? Иначе кто-нибудь видит какие-либо проблемы с тем, как я получаю время или использую время?