【3D技术宅公社】XR数字艺术论坛  XR技术讨论 XR互动电影 定格动画

 找回密码
 立即注册

QQ登录

只需一步,快速开始

调查问卷
论坛即将给大家带来全新的技术服务,面向三围图形学、游戏、动画的全新服务论坛升级为UTF8版本后,中文用户名和用户密码中有中文的都无法登陆,请发邮件到324007255(at)QQ.com联系手动修改密码

3D技术论坛将以计算机图形学为核心,面向教育 推出国内的三维教育引擎该项目在持续研发当中,感谢大家的关注。

查看: 5516|回复: 14

用d3d绘画2d的东西3种选择的比较

[复制链接]
发表于 2006-6-28 09:49:54 | 显示全部楼层 |阅读模式
让我发表一下我的看法,不知对不对,还请高手多多指教。
1、VB DrawPrimitive
2、ID3DXSprite
3、IDirect3DSurface9
三种方法都绘画一样多的次数,这样可能是ID3DXSprite 效率最高,但是一般在程序中IDirect3DSurface9 只会绘画一个大表面,而程序中会把不同的小表面合并到一个大表面了。因此最后render的时候,只会绘画一个大表面。因此render的效率是IDirect3DSurface9高了n倍,而VB模拟和ID3DXSprite在每次渲染的时候,要不断的绘画小三角和小rect,才能得到最终的绘制效果。因此IDirect3DSurface9 在渲染的时候只是简单的把大表面present出来,而VB模拟和ID3DXSprite要画n个小三角和小rect后组合成像,自然是IDirect3DSurface9 块很多倍啦。
发表于 2006-6-28 10:11:00 | 显示全部楼层
你的意思是ID3DXSprite绘制2D精灵效率最高。这中间还要考虑到ID3DXSprite启动了硬件加速IDirect3DSurface9是没有这个功能的。
 楼主| 发表于 2006-6-28 10:16:58 | 显示全部楼层
呵呵,我的意思是IDirect3DSurface9 绘画的效率最高啊,还请 鼯鼠大大把我的密码发给我,我注册这个论坛还不是因为有你这个高手在。[em04][em06]
 楼主| 发表于 2006-6-28 10:23:48 | 显示全部楼层
我的意思是当大家都是绘画同一样东西,一样多的次数,如一次,或者都是渲染n次的时候,ID3DXSprite 效率最高,但是一般渲染的时候IDirect3DSurface9都只是渲染一次就行了,这样的话IDirect3DSurface9自然绘画的最快。如果ID3DXSprite 也有缓冲这样的东西,就是每次渲染的时候,把这个缓冲的内容present到屏幕上,这样的话肯定是ID3DXSprite 渲染效率最高了,因为它有硬件加速功能。这是我的看法,还请各路高手多多指教。[em06]
 楼主| 发表于 2006-6-28 10:27:27 | 显示全部楼层
我的意思是当大家都是绘画同一样东西,一样多的次数,如一次,或者都是渲染n次的时候,ID3DXSprite 效率最高,但是一般渲染的时候IDirect3DSurface9都只是渲染一次就行了,这样的话IDirect3DSurface9自然绘画的最快。如果ID3DXSprite 也有缓冲这样的东西,就是每次渲染的时候,把这个缓冲的内容present到屏幕上就完成了渲染,这样的话肯定是ID3DXSprite 渲染效率最高了,因为它有硬件加速功能。就是不知道d3d的ID3DXSprite  有没有把一些东西画到一个缓冲的功能,如果有缓冲功能的话,那我会选择用ID3DXSprite。 这是我的看法,还请各路高手多多指教。[em06]
发表于 2006-6-28 10:58:09 | 显示全部楼层

其实一般讨论绘制2D的问题都是讨论ID3DXSprite和DDraw之间的速度差别,外带IDirect3DSurface9。我想除了IDirect3DSurface9使用比较麻烦以外,更主要是微软力推ID3DXSprite。自从dx9.0c微软对ID3DXSprite做了很大的修改,使用效率和效果上都提高很大。

往屏幕上绘制的时候都是有缓冲的。我觉得选择2D绘制首先在ID3DXSprite和DDraw之间选择。DDraw使用CPU来绘制2D,到现在来看也存在着很大的优势,毕竟现在客户端的配置都很强大,CPU都很强劲。而ID3DXSprite处理则是当今流行的显卡加速+内存来换取速度的。客户端只需要换一块显卡,加一条内存游戏速度就会有很大的提高。

 楼主| 发表于 2006-6-28 11:28:33 | 显示全部楼层
我发现ID3DXSprite比IDirect3DSurface9还要耗内存,绘画速度肯定是ID3DXSprite快。IDirect3DSurface9绘画的快主要体现在画一次,还是画多次的问题。IDirect3DSurface9只用画一次后台表面,而ID3DXSprite要画多次rect。还有IDirect3DSurface9还可以实现一些2D特效,如画面变灰,画面变色等特效,我不知道ID3DXSprite可以实现这些特效吗?
 楼主| 发表于 2006-6-28 12:31:45 | 显示全部楼层
当在绘制每时每刻都在变化的场景,如3D场景,vb+DrawPrimitive 比较适合,在绘制每时每刻都在变化的2d人物动画和2d横板地图,ID3DXSprite比较好,在绘画一些可能变化比较少的画面,如1秒到几分钟才变化一次的画面,如棋牌画面,则IDirect3DSurface9性能很出众。有同意的顶啊,不同意的也要顶,并且说出理由。我等着瞧哦。
发表于 2006-6-28 13:33:59 | 显示全部楼层

ID3DXSprite实现那些特效完全是小菜一碟.

我个人觉得做2D游戏ID3DXSprite足以应付一切了,效率一点都不差。至于IDirect3DSurface我只会在抓屏的时候用,其余不做考虑。

 楼主| 发表于 2006-6-28 14:37:09 | 显示全部楼层
呵呵,我对ID3DXSprite还是新手,请教一下ID3DXSprite用什么接口来实现画面变灰的问题?你不觉得在每一次渲染中把一个内存表面直接present到屏幕 会比在每一次渲染中不断的Draw多个带texture的小三角形要快吗?
[em06]
[此贴子已经被作者于2006-6-28 18:10:33编辑过]
 楼主| 发表于 2006-6-28 15:34:24 | 显示全部楼层
请问鼯鼠,抓屏是指什么,用来做什么的?
发表于 2006-6-28 17:21:39 | 显示全部楼层
语出惊人[em05],抓屏就是把屏幕上的东西抓下来存成图片阿~玩游戏没截过图吗?
 楼主| 发表于 2006-6-28 18:17:58 | 显示全部楼层
呵呵,你是要用surface来编程实现抓屏吗,原理是从内存里取出屏幕显示的东西做成图片吗?[em02]
发表于 2006-6-28 23:02:44 | 显示全部楼层
是滴是滴!
发表于 2007-5-21 23:48:18 | 显示全部楼层
ID3DXSprite就是做特效比较容易啊
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|3D数字艺术论坛 ( 沪ICP备14023054号 )

GMT+8, 2025-5-6 15:09

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表