阅读:3270回复:0
求教wince6 R3环境silverlight开发
目前在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")); // 余下的省略 } |
|