我测试了通过下面的代码将1280 * 720图片渲染到纹理中需要多少毫秒。我在两个值之间以毫秒为单位得到了结果(47到75)。
由于这个原因,我得到了延迟,因为我试图每秒显示30帧,这意味着渲染最多需要33.3毫秒。
1)这是衡量时间范围的正确方法吗?
2)我需要注意的任何怪癖?
startingTime = SDL_GetTicks ();
SDL_UpdateYUVTexture(bmp, NULL, pFrame->data[0], pFrame->linesize[0],
pFrame->data[1], pFrame->linesize[1],
pFrame->data[2], pFrame->linesize[2]);
SDL_RenderClear(renderer);
SDL_RenderCopy(renderer, bmp, NULL, NULL);
SDL_RenderPresent(renderer);
eTime = SDL_GetTicks ();
printf (" Time taken for Rendering... %ld ", eTime - sTime);
PS注意:
我已经使用每个API进行测试,看起来,SDL_UpdateYUVTexture需要大部分毫秒,而其他API几乎不需要0到1毫秒。其余时间由SDL_UpdateTexture占用。
答案 0 :(得分:0)
尝试使用OPENGLES库在屏幕上渲染帧,SDL_UpdateYUVTexture()api通常需要更多时间进行更新。