DirectFB学习之二

时间:8:25 2011-1-14

 

[ 准备与熟悉工具]
    编辑器:VI
    查看源代码:sourceInsight( 在WINDOWS上看)
    Linux 上应用程序编程
        gcc
        makefile
        调试

[ 先可行性分析DirectFB]

对于DFB的框架结构思考
    DFB其是LINUX版本的DirectDraw,其是直接地对于硬件的操作,且提供了有好的用户操作接口,
环境的建立由DFB来管理,用户其只要管理业务流程

    DFB所做的事情与WINDOWS当中的DirectX 有点相似,

对于DFB的思考,我们可以去DIRECTX的方式来思考

DFB之后QT,其相当于DIRECTDRAW之上的Silverlight

DFB其是只是DirectX当中的DiectDraw, 其只是在视频操作这一块硬件,而视频播放:DirectShow框架,与DirectSound不知道其是否已经提供了。

对于DFB的两个接口思考
1. 用户接口:
    APP用户其要完成开发一个正常的WINDOWS窗口,其是要使用DFB的什么接口来完成
2. DFB自身框架开发的接口思考:
    其是使用什么样的设计模式来完成:内部流程的管理,外部管理的需要。

DFB其是采用C语言来实现的,其里面采用了用宏与STRUCT来面向对象的使用,其所需要去思考的一个问题:真正面向对象的语言当中,其的类,接口当中的非静态方法,其是有this指针,而用C伪面向对象,其是没有的,所以在使用DFB当中,其需要自身手工的添加类似this指针的变量,如:
primary->Release( primary );

[ DSHOW OVER VIEW]

[ 对于显卡的认识]   
    显示上显示的图像,其本质是内存当中的数据,界面上各个对象(图片,界面,视频),其均是占用了一些内存区域。在显示的时候,通过一个video mixer 操作,当各个内存当中的像素数据MIXER到一起
    那些内存的专业术语:surface,
    在这些surface当中有一块很特别的surface, 特点:对于其的直接地操作,将会直接地显示屏幕当中,
    其被称为 primary surface,   
    其也说明了,当我们要在屏幕上显示数据,其的过程是:各个surface数据 COPY到primary surface当中
    每一个surface 其均是有二份的,也就是双缓冲(DOUBLE BUFFERING), surface 之间的切换其是使用Flip(),( 而不像OPENGL 当中的swapBuffer())

    surface 其是可以分成一些subSurface,
    subsurface 与surface之间的关系:
    1. 操作接口相同
    2. subsurface 其代表 surface的一部分。
    3. subsurface 其是没有分配system or video memory.
    ==>
    1. subsurface 其只是一个逻辑概念,以方便于管理surface
    2. subsurface 其的创建是要通过DFB,还是surface,
    3. subsurface其是怎么样与surface建立连接,与影响surface的
    怎么样创建
    怎么样向surface上写数据(创建窗口,显示图片)
    怎么样开启surface的doublebuffering
    怎么样交换double buffering
    怎么样将surface当中的数据COPY当中primary surface当中。(硬件加速 blit)
    输入设备的访问管理

    Layer
    其有什么用
    其依赖于具体的图形硬件(graphics hardware), 都个层在显示的时候其是通过alpha blending,溶合在一起的,其是由硬件来完成的。
    当今的PC graphics cards also support an additional layer( a "video layer"),
    现在关心其有什么用,怎么样通过DirectFB来操作
    Layer 其是对于surface的更高的一个概念。在WINDOWS当中,其是有。控件层,视频层( 本质还是要硬件支持才行的)
    如在窗口,其是就是在控件层当中,

    在思考的时候,可能会以Layer来思考,但在编程实现的时候,我们是使用surface,
    因为:Layer其是抽象的概念,其本质还是一个内存区域(Layers occupy different areas in video ram)
    而 surface其是在这些Layer当中占用内存。那么在创建 surface的时候,是否还要指明是哪一个Layer

    WINDOW / Window stack
    窗口与窗口栈,窗口栈其是说明了有许多的窗口。 在Windows当中其是有一个Z次序的概念。

2.3.5 Window / Windowstack
Normally the contents of a layer’s surface is controlled by the integrated windowing system
that shows the windows belonging to the layer on a configurable background.

Each window has its own surface that is used by the windowing system to produce the composed image of
overlapping windows.

Alternatively applications, especially games, can get exclusive access
to the layer. This way the application has direct control over the layer’s surface and it’s
contents, no windows are shown.

    其是在说明控件层的特点:
    显示器当中每一个窗口其是 在控件层当中均是占用了一块内存。我们创建窗口,应该是先在控件层当中内存区域当中,分配一块内存。为了方便于管理与使用,控件层其应该是于一个管理类来管理:控件层与众窗口。
    一个应用程序全屏显示,看不到其它窗口,其的本质原因:此应用程序其占用整个控件层( over the layer's surface)
    疑问:那此APP其占用了整个控件层,那其不改变其他SURFACE当中的数据。
    猜想:
        控件层:其有一个特定的区域能直接显示内容( primary surface)
    各个窗口其首先在SURFACE当中,要显示窗口,其就将此窗口复制PRIMARY surface

[ LINUX其对于硬件的管理]

USB,硬盘的访问

[LINUX当中,编程当中的库(H,LIB) 的管理]

第三库一般是放置在哪呢,在MAKEFILE当中是否需要指明

 

 

[ 目标]
    掌握DirectFB的业务流程,然后优化此流程,最终只要关注业务逻辑的编写

[感受]
    学习LINUX其是有一个陡峭的学习曲线,刚开始的时候,进程发缓慢的。但是一旦掌握一些基本操作之后,能大幅度提高编辑效率。
    注意:在使用LINUX的时候,要忘记WINDOWS的使用思维。

参考PAGE:
[1]VMware虚拟机中如何安装VMWare-Tools详解
http://www.cnblogs.com/kingkoo/archive/2007/12/28/1018613.html

[ sourceInsight 不能创建工程的问题]
    问题:下载了一个sourceInsight( 其是显示为Insight4)但其不能创建工程,也就是没有创建工程的菜单.
    解法:删除此软件,重新下载一个3.5版本的SOURCEINSIGHT,且要注意:创建工程其是一个单独的菜单项,没有在FILE当中,而在Project当中

转载于:https://www.cnblogs.com/pengxinglove/archive/2011/01/15/1936290.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值