zongkai28
驱动牛犊
驱动牛犊
  • 注册日期2008-03-19
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望11点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:3270回复:0

求教wince6 R3环境silverlight开发

楼主#
更多 发布于:2010-01-21 15:49
目前在wince6 R3环境下开发Silverlight程序,计划采用DirectDraw作为2D加速方式。处理器为pxa310,是支持DirectDraw的2D硬件加速的。

按照msdn上的介绍配置好环境变量,SYSGEN_XAML_RUNTIME,BSP_XRPLUGIN_DDRAW and BSP_XRPLUGIN_OPENGL。在系统bin文件中也正确生成了xamlrenderplugin.dll,XRRendererDDraw.dll,ddraw.dll几个dll文件。

运行系统自带的DirectDraw四个测试程序,与GDI方式相比,运行方式明显加快,证明DirectDraw底层是可以正常工作的。但是在运行Silverlight程序时,通过调试语句发现,程序可以正常调用底层的lcd驱动,但是速度却始终上不去,只有1帧,而GDI方式的绘图,速度可以达到5帧左右。网上看到有6410跑Silverlight自带的四个图标旋转的例子可以跑到30多帧,我这个速度怎么都上不去,郁闷啦,请知道的大侠赐教啊。

我现在的改动只有上面的环境变量和添加系统DirectDraw模块。还有就是修改了系统驱动halsurf.cpp文件里的HalCanCreateSurface函数,在这个函数一开始就直接return ok。

DWORD WINAPI HalCanCreateSurface( LPDDHAL_CANCREATESURFACEDATA pd )
{
    LPDDSURFACEDESC surf_desc = pd->lpDDSurfaceDesc;
    DDPIXELFORMAT* format = &surf_desc->ddpfPixelFormat;
    int caps = surf_desc->ddsCaps.dwCaps;
    SA2VideoSurf* primary_surf = (SA2VideoSurf*)GetDDGPE()->DDGPEPrimarySurface();

    // default to not support
    pd->ddRVal = DD_OK;//DDERR_UNSUPPORTEDFORMAT;
        NKDbgPrintfW(TEXT("qiandj--HalCanCreateSurface\r\n"));
        return DD_OK;//DDHAL_DRIVER_HANDLED;
    NKDbgPrintfW(TEXT("qiandj--never here\r\n"));
    
    // 余下的省略
}
游客

返回顶部