社区
C++ 语言
帖子详情
GDI与DirectDraw之间的区别
n567656756765676567
2012-02-23 08:05:55
如题:
gdi的调用过程,directdraw的调用过程,各是怎么样的????????
视频在显示器上播放,每次都刷新,那是什么原理让directdraw能画出图像覆盖在视频上?
请高手讲解!!!!!!!!
...全文
682
11
打赏
收藏
GDI与DirectDraw之间的区别
如题: gdi的调用过程,directdraw的调用过程,各是怎么样的???????? 视频在显示器上播放,每次都刷新,那是什么原理让directdraw能画出图像覆盖在视频上? 请高手讲解!!!!!!!!
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
n567656756765676567
2012-03-08
打赏
举报
回复
虽然最后一个问题没人回答,不过依然感谢!
n567656756765676567
2012-03-06
打赏
举报
回复
[Quote=引用 9 楼 bluewanderer 的回复:]
不是。
GDI和DDraw都是会把显存映射到内存上的(事实上这个映射和GDI、DDraw这些东西没关系,是显卡驱动干的,所以32位系统不开PAE你装1G显存的显卡就会发现物理内存就无论如何也超不过3G了)
GDI只要不涉及位图的操作都是直接告诉显卡要画什么,CPU不会自己操作显存。但是如果是画位图,GDI就会通过CPU的内存操作把内存中的位图复制到显存里(可能也就是你理解的DDraw的……
[/Quote]
那有个问题啊,比如pc机上有张图片,我想用DDraw显示在显示屏上,那不是也必须要先将图片文件读取到内存中, 然后通过内存转到显卡内存中吗? 这点我很不理解,如果是这样的话,那和GDI就一样了。。。
bluewanderer
2012-03-06
打赏
举报
回复
不是。
GDI和DDraw都是会把显存映射到内存上的(事实上这个映射和GDI、DDraw这些东西没关系,是显卡驱动干的,所以32位系统不开PAE你装1G显存的显卡就会发现物理内存就无论如何也超不过3G了)
GDI只要不涉及位图的操作都是直接告诉显卡要画什么,CPU不会自己操作显存。但是如果是画位图,GDI就会通过CPU的内存操作把内存中的位图复制到显存里(可能也就是你理解的DDraw的行为)
而DDraw操作位图是直接告诉显卡把哪部分显存内容复制到显示区域,CPU不会自己操作显存。但是相应的DDraw只能操作位图。
n567656756765676567
2012-03-06
打赏
举报
回复
[Quote=引用 7 楼 bluewanderer 的回复:]
以前2D游戏区别于桌面应用主要在于有大量的位图复制操作,因为游戏里的内容都是事先生成好的位图,而桌面应用的内容往往是现画的。
GDI的硬件加速主要在画线、画圆、写字这些操作上,而画位图的时候,GDI的重大缺陷就是位图必须保存在内存里。虽然GDI画位图也是显卡加速的,但是位图数据必须通过速度相对来说很慢的前端总线传到显卡上。
而DDraw最核心的功能就是可以把位图直接保存在显存中,画位图……
[/Quote]
哦, 那可以这样说DDraw直接将显存映射到内存中,即我们只要填充那个内存结构,就可直接将位图显示出来。
而GDI, 是先画好在内存中,然后再复制到显存中,是吧???
bluewanderer
2012-03-05
打赏
举报
回复
首先这两个都过时了,特别是DirectDraw。
当年这两个都是用显卡加速的,区别最主要的是DirectDraw支持显存位图,GDI里位图只能在内存里,另外DirectDraw处理方式更贴近硬件,所以杂七杂八的事少,也就更快。Windows Vista开始GDI丧失显卡加速,虽然Win7又恢复了一点,但是还是没有往日荣光。DirectDraw这东西10年前就被Direct 3D掩埋了,DirectX 7开始D3D不再依赖DDraw,DirectX 8开始DDraw不再更新。
bluewanderer
2012-03-05
打赏
举报
回复
以前2D游戏区别于桌面应用主要在于有大量的位图复制操作,因为游戏里的内容都是事先生成好的位图,而桌面应用的内容往往是现画的。
GDI的硬件加速主要在画线、画圆、写字这些操作上,而画位图的时候,GDI的重大缺陷就是位图必须保存在内存里。虽然GDI画位图也是显卡加速的,但是位图数据必须通过速度相对来说很慢的前端总线传到显卡上。
而DDraw最核心的功能就是可以把位图直接保存在显存中,画位图的时候直接在显存中复制,通过带宽非常大的显卡内部总线。
比如你画一棵树,GDI每画一次就要从内存到显卡复制一次。而用DDraw之需要复制一次,以后都是在显存内操作了所以快。
但是于此同时DDraw舍弃了GDI的画线、画圆、写字乃至缩放位图等等的功能,所以渐渐被可以实现那些操作的D3D取代了。
ppsharp
2012-03-05
打赏
举报
回复
DirectDraw可以提供给开发者代表了真实显示内存的绘图页面。这意味着,只要你使用了DirectDraw,你就可以直接操纵显卡上的内存,图形显示变得出奇的快速。而且这些页面代表了显存中连续的内存块,使得在页面中寻址和读写变得非常方便。
直接百度 google不是更快吗?
n567656756765676567
2012-03-05
打赏
举报
回复
别让此贴沉没啊。。。。顶一个先,高手快快现身,分都给你了,不想无结果结贴啊
n567656756765676567
2012-03-05
打赏
举报
回复
[Quote=引用 4 楼 bluewanderer 的回复:]
首先这两个都过时了,特别是DirectDraw。
当年这两个都是用显卡加速的,区别最主要的是DirectDraw支持显存位图,GDI里位图只能在内存里,另外DirectDraw处理方式更贴近硬件,所以杂七杂八的事少,也就更快。Windows Vista开始GDI丧失显卡加速,虽然Win7又恢复了一点,但是还是没有往日荣光。DirectDraw这东西10年前就被Direct 3D掩埋了,Dir……
[/Quote]
DirectDraw是将图片的数据直接拷贝到显卡内存上,而GDI呢??? 是怎么样的? 我知道DirectDraw会比较快, 但不知快在哪里? 我想知道更深层的原因。。。
n567656756765676567
2012-03-05
打赏
举报
回复
[Quote=引用 3 楼 ppsharp 的回复:]
DirectDraw可以提供给开发者代表了真实显示内存的绘图页面。这意味着,只要你使用了DirectDraw,你就可以直接操纵显卡上的内存,图形显示变得出奇的快速。而且这些页面代表了显存中连续的内存块,使得在页面中寻址和读写变得非常方便。
[/Quote]
DirectDraw是将图片的数据直接拷贝到显卡内存上,而GDI呢??? 是怎么样的? 我知道DirectDraw会比较快, 但不知快在哪里? 我想知道更深层的原因。。。
n567656756765676567
2012-02-23
打赏
举报
回复
gdi为什么比directdraw慢, directdraw是直接将数据拷贝到显存中,那 gdi呢?
论
G
DI
与
Di
rect
Draw
的关系
论
G
DI
与
Di
rect
Draw
的关系,
Di
rect
Draw
开发者或学习者必顺清楚了解的内容。
Di
rect
Draw
的学习笔记
Di
rect
Draw
Di
rect
Draw
Di
rect
Draw
Di
rect
Draw
的学习笔记的学习笔记的学习笔记的学习笔记 开始看Wince下面的D
Draw
编程了,在wince的对应目录下面有几个例子: 在使用
Di
rext
Draw
时,需要首先创建一个对象
Di
rect
Draw
的实体,该对象实体代表了微机显示适配器。然后,使用接口所提供的方法来操作该对象实体,使之完成有关命令和任务。
基于MFC的
Di
rect
Draw
绘制
基于MFC的
Di
rect
Draw
绘制,论文.
Di
rect
Draw
简单碰撞检测
简单
Di
rect
Draw
游戏,飞行过程中碰撞检测
Di
rect
draw
入门资料
Di
rect
X 的
Di
rect
draw
入门资料,大家对微软视频图像渲染技术感兴趣的可以下载。
C++ 语言
65,187
社区成员
250,526
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章