wince5下directdraw初体验
来源:互联网 发布:淘宝隐形降权怎么办 编辑:程序博客网 时间:2024/06/05 15:41
http://blog.csdn.net/alien75/article/details/5291600
因项目下一步应用的需求,需要用directdraw来实现相应功能,因此先行做初步尝试,建立一个感性的认识。
众所周知wince5支持directdraw,只是和PC下的还是有所不同的,在学习directdraw的时候就以public下的mosquito为例子进行学习,要让这个程序在wince5下跑起来,还是要做一点改动的。
实现前提:
(1)要加入directdraw组件
(2)定制系统并生成SDK,并用此SDK编译应用程序
(3)链接gxguid.lib,网上说的还需要uuid.lib和ddraw.lib,实际上在此例子中是不需要的,原因在下面描述。
修改
(1)在运行到DirectDrawCreate时会报0xc0000005错误,原因可能与ddraw.lib有关。用从ddraw.dll动态获取DirectDrawCreate指针来调用的方法,因此ddraw.lib不再需要链接。而在此例中,没有其它的uuid使用,因此uuid.lib也不需要进行链接。
(2)DirectDrawCreate的第二个参数在使用上面的办法获取后,要由LPDIRECTDRAW改为LPDIRECTDRAW4
(3)执行CreateSurface创建overlay surface失败,原因有两个,如下
主要原因:显示驱动ddraw功能有错,改用另一个BSP带的显示驱动问题解决,需要对两个驱动进行比较找出问题所在。
次要原因:dwBackBufferCount由2改为1,为什么只能有一个buffer还需要深入了解。
(4)经过上述修改图片可以动态显示,但底色没有透明,去掉ddpfOverlayFormats中关于YUV的两个格式,只保留RGB565和RGBA555两种。
(5)前景色为绿色,而不是原有的黄色,估计与驱动中颜色索引有关,待深入了解。
从此例子来看,directdraw开发是先要创建一个directdraw对象,然后创建prime surface和overlay surface,通过surface的操作显示图片来达到动画效果。
附:MOSQUITO的基本流程
1、创建窗口
2、创建directdraw实例对象
3、设置屏幕为Normal模式
4、创建主表面
5、判断驱动是不否有overlay功能
6、创建overlay表面
7、加载位图资源
8、配置overlay表面
9、设置计时器,循环变换位置并显示
问题:
用老的驱动,使用TCPMP的directdraw功能播放视频OK,如果用新的驱动则无显示,原因是什么?
- wince5下directdraw初体验
- wince5下directdraw初体验
- wince5下directdraw初体验
- DirectDraw初体验 in windows mobile
- WinCE5.0显示驱动对DirectDraw 功能的支持
- DirectDraw 与 DirectInput 的游戏编程体验-
- DirectDraw与DirectInput游戏编程体验
- wince5.0 下中英文
- 窗口模式下使用DirectDraw
- 初接触Directdraw
- DirectDraw
- DirectDraw
- WinCE5下创建桌面快捷方式
- DirectDraw窗口模式下的动画
- Windows 下 Subversion 初体验
- linux 下汇编初体验
- Windows下Git初体验
- linux下qq初体验
- 《大数据时代》 概要
- vs2008 使用mysql
- HDU 4031 Attack
- Oracle 外键 说明
- 递归_汉诺塔问题
- wince5下directdraw初体验
- iOS 合并.a文件,制作通用静态库
- c#里的checkbox
- Redis的PHP客户端
- android 手势操作GestureDetector
- C#中bool类型不能和其它整数类型转换
- SQL直接库中查询很快,在应用中查特慢
- erlang & php 操作mysql的效率测试
- Parallel scan in HBase