003:D2D 性能测试-绘制不同对象的帧率变化

前言:

       D2D性能测试,目的是了解D2D特性,为后续系统设计确定技术路线。主要对D2D绘制不同对方的速度进行测试,测试的对象包括:图像、文本、椭圆和矩形,测试绘制不同对象对帧率的影响。测试结果表明:以帧率下降速度最快排列,绘制文本帧率下降最快,其次是椭圆、矩形,影响最小的是图像。

       探讨了提高文本绘制的方法:采用CBitmapRenderTarget,类似于一个位图缓冲区,现在里面进行绘制,然后再纹理贴图的方式显示在屏幕上,速度飞起,但如果窗口大小经常变动或文字内容经常更改,则改方法存在一定的弊端。

一、绘制图像

     从硬盘读取一张JPG图像到CD2DBitmap(数据由硬盘,读取内存,在以纹理的方式存储到GPU的显存中,瓶颈在于图像的读取;另外是否要对图像进行修改也是需要考虑的,如果类似DICOM这样,需要调整窗宽窗位,频繁的修改图像,则图像在CPU端的修改,及内存到显存的传输是影像性能的关键),然后显示在窗口中,拖动窗口进行重新绘制,测试对帧率的影像,途中下方输出是绘制的帧率,可以看到对帧率基本没有影响。分析CD2DBitmap应该是以纹理的方式存在于GPU端,绘制的过程就等同于进行纹理贴图进,因此不会对帧率有什么影响。

 二、绘制矩形

       鼠标每单击窗口一次,在该位置绘制一个矩形,随着点击次数的增加,绘制帧率有所下降,但并不明显。每绘制一次,都需要传输矩形参数到GPU端。

三、绘制圆

        鼠标每单击窗口一次,在该位置绘制一个圆,随着点击次数的增加,绘制帧率有所下降,但并不明显。每绘制一次,都需要传输矩形参数到GPU端。

四、绘制文本

      鼠标每单击窗口一次,在该位置绘制文本“你好 Direct 2d !”,随着点击次数的增加,绘制帧率急剧下降,由原来的2万多,下降到200左右。

五、采用 CBitmapRenderTarget 方法

        随机在窗口中绘制1000条“你好 Direct 2D!”,并测试帧率。过程:将需要绘制的文本,先绘制到 CBitmapRenderTarget 上,然后创建 CD2DBitmapBrush 画笔,在窗口中用该画笔绘制,帧率飞起。原因:CBitmapRenderTarget 应该对应一个显存中的缓冲区,在上面绘制需要显示的内容,而创建 CD2DBitmapBrush 画笔的过程,应该就是将其转为纹理对象,最后指定绘制区域,对应纹理贴图的位置。因此其速度是最快的。

 六、总结

        CBitmapRenderTarget 方法是最优的方案,但具体的实现会涉及过多的细节,后续扔需要进行测试。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值