我之前写的RTSP播放器D3D渲染部分使用的是D3D9的API,前面一篇文章已经提到渲染性能比较差,还不及OpenGL。我目前使用的电脑支持到D3D 11.0,所以就准备把D3D9渲染替换为D3D11。D3D 11.0不支持直接渲染YUV,看官方文档要11.1之后才支持,只能借助libyuv把YUV转换成RGB再渲染。经过一番摸索之后,终于渲染出视频了。立马测一下性能,结果把我惊到了,渲染1000帧1080P视频耗时趋近于0,要知道这还包含YUV转RGB的耗时。
D3D11渲染的代码已经更新到了RTSP播放器的github上(https://github.com/greenjim301/rtsp)。