关于绘图----我就是要突破极限(求老鸟帮忙).

baili35 2011-08-02 03:50:01
背景最近公司几个嵌入式产品都要重新做UI,所以自己打算开发一套DUI,操作系统为wince4,5,6.使用颜色格式RGB565.模仿MVC架构使用xml

配置界面,开发的时候只用关系逻辑.

问题描述经过测试公司的几个wince产品的像素格式均为RGB565格式的.我在一个产品上做了一个有关贴图的试验.如下:

硬件环境:CPU:Vortex86DX x86架构800mhz
带独立显卡.
显示屏:640*480 60hz
软件环境:
操作系统wince6.0无DDRaw和OpenGL支持.

使用兼容位图贴图速度:98kCPU周期约0.12ms.
使用RGB565的DIB进行贴图时间为:8370kCPU周期,约10.2ms
进行640*480*2字节的内存拷贝用时为1362kCPU周期月1.6ms

做1024次绘图加贴图(绘图内容先填充整个位图然后绘制一个实心圆)
绘图用时 贴图用时
使用兼容位图: 2134ms 2198ms
使用RGB565内存数据绘制: 3964ms 11452ms

从实验数据看出现在的主要瓶颈已经是贴图了.


问题来喽查找资料说使用GAPI可以直接访问显存,可惜我通过做实验GAPI不能使用,在者我一直做wince上层应用对于如何方位显存,控制帧缓冲的

填充等底层操作一无所知,还有设备已经定型或者是购买的不能够重新定制添加DDraw,在此求各位前辈支招,解决快速贴图的瓶颈.
...全文
270 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
baili35 2011-08-10
  • 打赏
  • 举报
回复
努力学习流驱动中~~~~~~~~~~~
baili35 2011-08-09
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 harktrip 的回复:]
這問題不難~很簡單.

不過我不是老鳥,所以沒資格幫忙了
[/Quote]

我入行没多长时间,只要会这个的对我来说就是老鸟了.
harktrip 2011-08-09
  • 打赏
  • 举报
回复
這問題不難~很簡單.

不過我不是老鳥,所以沒資格幫忙了
baili35 2011-08-07
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 firefly123 的回复:]
这种配置在640*480*16位下130帧每秒左右是一点问题都没有的,而且还不用显存,用了也浪费。有一些库直接可以做到,比如SDL,我搞游戏的,用过不如这种配置的,也达到640*480*16bit 130帧
[/Quote]
设备的使用兼容位图贴图的速度可以达到8333fps,这个是理论上可以,但是显示器只有60hz,但是我有多个设备,不同的,而且所有的绘图是用cpu完成并不是GPU,绘制完了在内存中,现在就是要解决内存送显存的速度,这个送一帧的速度是60fps左右(使用RGB565像素格式).如果生成速度在用点时间,对于另外一个设备来说这个就是要命的.另外一个设备cpu200mhz,没有显存,没有gpu,只有32m内存,操作系统wince5.0.
心灵彩虹 2011-08-07
  • 打赏
  • 举报
回复
显存和内存要足够大才行,如果贴图比较大,一般设备都会挂掉。
firefly123 2011-08-06
  • 打赏
  • 举报
回复
这种配置在640*480*16位下130帧每秒左右是一点问题都没有的,而且还不用显存,用了也浪费。有一些库直接可以做到,比如SDL,我搞游戏的,用过不如这种配置的,也达到640*480*16bit 130帧
baili35 2011-08-06
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 aaa_tnt 的回复:]
貌似没什么办法了,CE6 也去掉了GAPI的支持。。
似乎楼主只能做一个流驱动。。来映射显存buffer。。写屏了。
[/Quote]

如何确定要映射那部分内存的,求解.
AndyZhang 2011-08-04
  • 打赏
  • 举报
回复
我说是搜到 pkfuncs.h这个文件了,网速太慢,编辑不了我的帖子了,所以又发了一个
AndyZhang 2011-08-04
  • 打赏
  • 举报
回复
这个我在mobile目录下搜到了,其实也是wince5.0内核,你搜索一下肯定有。

感觉这个应该问问底层,驱动什么的。不了解很难做好上层,不懂上层,做好下层也不容易,现在需要综合性人才啊。。。。
Ei 2011-08-03
  • 打赏
  • 举报
回复
貌似没什么办法了,CE6 也去掉了GAPI的支持。。
似乎楼主只能做一个流驱动。。来映射显存buffer。。写屏了。
当我遇上-你 2011-08-03
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 baili35 的回复:]
引用 4 楼 northcan 的回复:
我指的是wince6的情况。
pkfuncs.h
没有这个文件可能是你的sdk没有包含某些组件。
我的sdk里面是有这个文件的。

wince5操作物理地址比wince6更容易。


加载一个内核态的流驱动,是否要写一个驱动,是在定制NK的时候做还是在NK定制好后做呢,是否还需要自己加载这个驱动呢,我只做应用层对于驱动开发这里的不会啊.
[/Quote]
驱动写好后,在应用层动态加载也可以的,找你们搞底层的写个呗
northcan 2011-08-02
  • 打赏
  • 举报
回复
不过这都要在完成之后,重新定制NK。
需要用到Platform Builder工具。
这个方法肯定可行。
有没有其他更方便的途径。
只能谷歌了,或者看看其他坛友的答案。
northcan 2011-08-02
  • 打赏
  • 举报
回复
我觉得要在底层做。
如果不做流驱动的话。
应该可以在OALIOCTL库导出的IOControl函数中
加一个映射地址的case
然后应用中通过KernelIoControl控制。
baili35 2011-08-02
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 northcan 的回复:]
我指的是wince6的情况。
pkfuncs.h
没有这个文件可能是你的sdk没有包含某些组件。
我的sdk里面是有这个文件的。

wince5操作物理地址比wince6更容易。
[/Quote]

加载一个内核态的流驱动,是否要写一个驱动,是在定制NK的时候做还是在NK定制好后做呢,是否还需要自己加载这个驱动呢,我只做应用层对于驱动开发这里的不会啊.
northcan 2011-08-02
  • 打赏
  • 举报
回复
我指的是wince6的情况。
pkfuncs.h
没有这个文件可能是你的sdk没有包含某些组件。
我的sdk里面是有这个文件的。

wince5操作物理地址比wince6更容易。
baili35 2011-08-02
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 northcan 的回复:]
应用程序申请一块内存
用VirtualCopyEx()将其映射到显存
这个函数和VirtualCopy类似但有不同
它需要两个进程Handle,一个是你的应用,一个是NK。
源进程是NK
可以加载一个内核态的流驱动
应用程序通过DeviceIoControl控制流驱动调用VirtualCopy进行映射
之后就可以在应用程序中,直接写显存。
[/Quote]
我的操作系统是主要是wince5和wince6,在wince6的sdk中并不包含pkfuncs.h这个单元,所以VirtualCopyEx这个函数只能手动从动态链接库导出.但是wince5怎么办,我这套界面库有点不通用了.而且可以访问显存了,如果我的程序运行在非全屏模式下怎么办呢?
northcan 2011-08-02
  • 打赏
  • 举报
回复
应用程序申请一块内存
用VirtualCopyEx()将其映射到显存
这个函数和VirtualCopy类似但有不同
它需要两个进程Handle,一个是你的应用,一个是NK。
源进程是NK
可以加载一个内核态的流驱动
应用程序通过DeviceIoControl控制流驱动调用VirtualCopy进行映射
之后就可以在应用程序中,直接写显存。
baili35 2011-08-02
  • 打赏
  • 举报
回复
如果帮助解决了我的问题,当我完成UI库的开发后,送上头文件+lib(R版)+使用文档+本贴积分.
内容概要:本文系统介绍了进程的基本概念与核心原理,阐述了进程作为程序在计算机中一次运行活动的本质,是操作系统进行资源分配和调度的基本单位。文章详细解析了进程的五大特性——独立性、并发性、动态性、异步性和结构特征,并指出进程由程序代码、数据和进程控制块(PCB)三部分构成。同时,文中列举了进程在操作系统管理、多任务处理、服务器开发、嵌入式系统以及分布式系统中的广泛应用场景,并关联了操作系统、线程、PCB及进程调度等重要概念,最后归纳了进程相关的备考要点,涵盖生命周期、状态转换、调度算法及同步互斥机制等内容。; 适合人群:计算机专业学生、准备操作系统相关考试的学习者,以及从事系统编程、后端开发或嵌入式开发的技术人员;具备基本计算机组成和操作系统知识者更佳。; 使用场景及目标:①深入理解进程在操作系统中的角色与工作机制;②掌握进程生命周期、状态变化及调度策略;③为技术面试、考研复试或课程学习提供理论支持;④辅助设计高并发、多任务的应用系统。; 阅读建议:建议结合操作系统教材或实际代码案例对照学习,重点关注进程状态图、PCB结构和调度算法的实现,通过画图和模拟加深对同步与互斥机制的理解。
内容概要:本文档《测量不确定度在符合性判定中的应用》由中国合格评定国家认可委员会发布,旨在为合格评定机构在进行符合性判定时提供科学的技术指导。文档系统阐述了如何在判断被测对象是否满足规定限值要时,合理考虑测量不确定度及其对判定结果的影响,介绍了多种判定规则,如简单接受、准确度法、考虑测量能力指数和有保护带的判定规则,并深入讲解了合格概率、消费者与生产商风险的计算方法,强调通过风险评估优化接受区间设置,提升判定的科学性与公正性。; 适合人群:从事检测、校准、计量及合格评定工作的技术人员、实验室管理人员、质量控制人员以及相关领域的研究人员。; 使用场景及目标:① 在检测报告中科学地做出与规范或标准的符合性声明;② 设计合理的判定规则以控制错误接受(消费者风险)和错误拒绝(生产商风险);③ 基于测量不确定度和生产过程特性,优化接受限设置,支持实验室在合同评审阶段与客户协商确定判定策略;④ 支持计量检定、产品认证、环境监测、食品安全等领域中的合规性评价。; 阅读建议:此文档技术性强,涉及概率统计与测量理论,建议读者结合实际案例逐步理解各类判定规则的应用逻辑,重点关注第5章判定规则选择流程与第7章风险量化计算,宜配合标准文件如ISO/IEC 17025、GUM等一同学习,以全面掌握符合性判定中的不确定性管理方法。

19,523

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 嵌入开发(WinCE)
社区管理员
  • 嵌入开发(WinCE)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧