如何在SDL2中渲染纹理时获得最小时间延迟?

时间:2014-06-03 11:48:36

标签: sdl sdl-2

我测试了通过下面的代码将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占用。

1 个答案:

答案 0 :(得分:0)

尝试使用OPENGLES库在屏幕上渲染帧,SDL_UpdateYUVTexture()api通常需要更多时间进行更新。