[DFB] dfb 对图形的renderto

在看DFB有关图形 renderto的部分。
  之前一直以为, DFB是没法对图形进行scale的,但后来在DFB讨论群上,一个网友指点了下,才发现DFB对图形这块有很多好玩和有用的东西,只是我不知道罢了。 下面主要说图形的scale。
   DFB绘图的过程,一般是根据图形的ImageProvider,获取图新的DFBSurfaceDescription信息,并根据 DFBSurfaceDescription信息来CreateSurface DFB的 IDirectFBSurface,之后把图片给renderto到这个surface上,当需要显示到OSD时候, 通过blit把图形临时的surface数据给blit到primary surface,并把primary surface给flip出来, 这就是一整个DFB绘图的过程。
  绘图过程中,CreateSurface的大小,像素等都是有DFBSurfaceDescription来 决定的,因此修改 DFBSurfaceDescription的相关信息,可以实现对图形的一些操作。 简单那的scale就是限制 DFBSurfaceDescription的width&height,并设置flags为width&height有效,这样,创建 的surface 就是按照这个width&height来定义的surface,并且render时候,默认会把图片renderto到整块surface上,因 此这一步就实现了pic的scale功能; 而之后的blit和flip,则只是简单的把surface的图形数据通过blit到primary surface上而显示出来。
  
  当然,如果不定义DFBSurfaceDescription的 width&height,则此时的surface是按照图形的原始尺寸来创建的,也就没有scale功能。 当blit时候 ,可能是把pic surface的局部给blit到primary surface上,因此此时看到的就是部分图形了 !
  
  DFB中,有关位置和坐标的参数,renderto flip等都给的NULL[0值]。具体的坐标位置,是在 struct IDirectFBSurface_data 的 area成员中。
   struct {
   DFBRectangle wanted; /* passed to GetSubSurface */
   DFBRectangle granted; /* clipped by parent on creation */
   DFBRectangle current; /* currently available area */
   DFBInsets insets; /* actually set by the window manager */
   } area;
  它标注的四个参数,我还没弄明白,还需进一步追查!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值