LRG2002
驱动牛犊
驱动牛犊
  • 注册日期2002-10-30
  • 最后登录2003-04-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:2072回复:14

如何直接写显卡内存?

楼主#
更多 发布于:2002-11-05 00:54
为了把USB摄像头的图象更快地显示,最好的办法是在驱动软件里
直接把图象数据流丢到显存里直接显示图象。
但怎么才能找到显存的地址,如何直接写屏?
应用程序要做哪些响应的动作来完成显示?
请驱动及显卡高手指教,不胜感激。
gung
驱动中牛
驱动中牛
  • 注册日期2001-06-10
  • 最后登录2008-04-21
  • 粉丝0
  • 关注0
  • 积分25分
  • 威望3点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-11-05 08:57
不会,不过有人问过,搜搜看。
ysy
ysy
驱动中牛
驱动中牛
  • 注册日期2002-02-18
  • 最后登录2008-08-25
  • 粉丝0
  • 关注0
  • 积分201分
  • 威望29点
  • 贡献值0点
  • 好评度19点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-11-05 09:12
我觉得用usb传输图像的瓶颈在于传输通道,不在主机端。
fracker
驱动太牛
驱动太牛
  • 注册日期2001-06-28
  • 最后登录2021-03-30
  • 粉丝0
  • 关注0
  • 积分219分
  • 威望81点
  • 贡献值0点
  • 好评度23点
  • 原创分0分
  • 专家分1分
  • 社区居民
地板#
发布于:2002-11-05 11:27
我觉得用usb传输图像的瓶颈在于传输通道,不在主机端。

同感。
LRG2002
驱动牛犊
驱动牛犊
  • 注册日期2002-10-30
  • 最后登录2003-04-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2002-11-05 15:42
传输瓶径差不多解决了,基本达到了USB的最大值。
为了更实用,还必须采用更快的显示图象方法,比如 OVERLAY等。
直接写屏是让图象看起来没有停滞感的最好方法了。所以图象设备
的数据一般都是采用直接写屏的,可惜我不知道原理。苦闷呀。
LRG2002
驱动牛犊
驱动牛犊
  • 注册日期2002-10-30
  • 最后登录2003-04-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2002-11-05 15:48
传输瓶径基本没办法了,差不多已经达到USB的最大值了。
为了使图象看起来更快,更流畅,必须采用OVERLAY等方法,直接写屏。
现在的图象设备的数据流基本都是直接写屏的吧。可惜我不知道原理,
苦闷呀,苦闷
OneWind
驱动小牛
驱动小牛
  • 注册日期2002-05-15
  • 最后登录2009-04-10
  • 粉丝0
  • 关注0
  • 积分82分
  • 威望11点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2002-11-06 18:09
同病相连,不过我不是做图像采集的。我用的图象卡(北京大恒)就是采用的这样的技术.
    我想实现的是直接写屏画BMP或则函数图像,我找到显存的基地址
但不知道显存是怎样组织的所以画上去总是出现一条有灰度的带。我
也正想把这个东西做完。能交流一下吗?
cbuilder@peoplemail.com.cn
你可以试试Directx我不想用他,你可以试试.

[编辑 -  11/6/02 by  ZHANGYIFENG]
嘿,大家好!
OneWind
驱动小牛
驱动小牛
  • 注册日期2002-05-15
  • 最后登录2009-04-10
  • 粉丝0
  • 关注0
  • 积分82分
  • 威望11点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2002-11-06 18:18
LRG2002:
   使用Windrvr很容易找到显卡基地址.大恒公司也是这样干的。
嘿,大家好!
OneWind
驱动小牛
驱动小牛
  • 注册日期2002-05-15
  • 最后登录2009-04-10
  • 粉丝0
  • 关注0
  • 积分82分
  • 威望11点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2002-11-07 13:04
我的已经能工作啦!
嘿,大家好!
LRG2002
驱动牛犊
驱动牛犊
  • 注册日期2002-10-30
  • 最后登录2003-04-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2002-11-08 09:41
ZHANGYIFENG, 你好。希望我们以后能多交流下。
用Directx是可以,但必须要驱动里支持Directx,并不是
所有的视频设备的驱动都支持呀,至少我的并不支持
还是直接写屏来的好。我给你发了邮件,希望能向你请教,并交流相关问题经验
Sunbeam
驱动小牛
驱动小牛
  • 注册日期2001-10-29
  • 最后登录2010-01-29
  • 粉丝0
  • 关注0
  • 积分4分
  • 威望12点
  • 贡献值0点
  • 好评度11点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2002-11-08 13:37
大家对直接写屏这么感兴趣!!!!

在DOS下你要先设置你的显示模式,之后就得知显存的组织格式了。
在WINDOWS下,M$提供了DDRAW模式要尽量采用此模式。否则就会出现不兼容情况。即要通过DDRAW来得知显存的组织格式。
堂堂正正做人,明明白白做事
OneWind
驱动小牛
驱动小牛
  • 注册日期2002-05-15
  • 最后登录2009-04-10
  • 粉丝0
  • 关注0
  • 积分82分
  • 威望11点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2002-11-08 14:37
兼容问题的确不少,不过这样程序执行起来效率会更高一点,更直接一些.
LRG2002:我已经给你回邮件,你可能要考虑各种分辨率下的显存组织情况.我只是在32位下写成功,有空我再试验16,256色下的操作.


[编辑 -  11/8/02 by  ZHANGYIFENG]
嘿,大家好!
taiweihua
驱动牛犊
驱动牛犊
  • 注册日期2002-11-08
  • 最后登录2010-10-14
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2002-11-08 19:37
在设备管理器中查找到显示卡的内存地址(应该是物理地址),然后编写驱动程序将物理地址映射为逻辑地址,然后向里面写数就行了。
sipu
驱动牛犊
驱动牛犊
  • 注册日期2002-05-13
  • 最后登录2005-01-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2002-11-11 18:26
SetupDixxx能在内核态调用吗?

如果可以的话倒是能得到显卡的地址空间,然后将数据通过DMA的方式传给显存,但是你如何考虑同步问题,防止撕裂呢?

可以交流。
jansen
驱动小牛
驱动小牛
  • 注册日期2001-10-21
  • 最后登录2007-10-17
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
14楼#
发布于:2002-11-15 21:08
video port extension(VPE视频端口扩展)使用cpature
抓取图像然后使用overlay显示,可以flip交换特别快的,但是硬件及驱动程序需要支持才行
rich
游客

返回顶部