showton 兄占的地方,我也要抢。有关 DirectX 8 的问题(300分)

  • 主题发起人 主题发起人 小雨哥
  • 开始时间 开始时间

小雨哥

Unregistered / Unconfirmed
GUEST, unregistred user!
大家知道 DirectX 8 和以前版本有很大的差异,尤其是 2D 的制作,有哪个富翁对这方面
比较了解,可以集中经典地给一个差异和移植方面的注意事项或干脆是否应该另起炉灶。
 
http://www.gameres.com/
哈哈,介绍你个地方,不过大部分都是VC,看看原理也无妨。
里面有directx的教程。
 
它那里只有一篇讲的是这个题目的,还是篇翻译作品,基本思想是通过建一个 D3D 的纹理
表面来模拟以前的 DirectDraw 表面。
 
超级菜鸟directx入门讲座
http://www.gameres.com/Articles/Visual/2D/directx8_01/index.htm
DirectX8 教程
http://www.gameres.com/Topics/DXTutorial
游戏编程指南
http://www.gameres.com/Topics/PCGameGuide/
等等等等
太多了啊。。
 
showton 兄,不是这样的,比如,假如你需要一个 2D 的场景,原来我们可以建一个 DirectDrawSurface ,
在这个表面上画就行了。现在进入了 DirectX 8 的年代后,这个
DirectDrawSurface 被藏到更深的底层了,而我们知道,D3D 本身就是画在 DirectDrawSurface
表面上的,既然如此,我们为什么不仍然直接使用这个 DirectDrawSurface 呢?DirectX 9
又从新把这个 DirectDrawSurface 做为辅助放到了 API 中,这是为什么呢?我很不明白。
很多时候,确实需要 3D 的场景,但假如使用 2D 就能很好地表现了的话,我倾向于使用 2D,
而不管时代是怎么样的,那么我该如何达到我的目的呢。
现在的做法,要么就是放弃 DirectX8 ,要么就是浪费很多资源在 3D 上建 2D ,难道在
DirectX8 发行时,就没有考虑过 2D 的需要?
 
看答案!
 
参与讨论的人太少了也。
 
说实话你说的东西我一点也不懂///
呵呵,不过正打算研究它。。
 
呼~~花了几天时间先把C看了一遍,学了一部分Windows SDK基础,最后把directX8摸了一遍,还把几年前丢掉的线性代数买了本书复习了一下。。累啊。。
的确,
他与d7的差别实在是太大了,
连个COM对象的影子都没见到。。
搞得几乎不像是SDK 繁琐的风格了,
害得我捧着D7得教程写D8,写得我晕头转向。。
不过他的2D和3D的设备还是不同啊,
2D可以很轻松搞定了 ,比起D7来还是很有效率了/
3D就复杂多了//特别是灯光,我做到这里就做不下去了


 
没研究,我想可能会不会跟图形发展的趋势统一,或者跟3D引擎有关呢,乱说的哦
 
是啊,showton 兄应该已经很清楚这个问题的答案了,我们是否还继续对这个问题更进一步讨论呢?
 
HOHO~有必要的哦~而且以后也要一直讨论下去呀。。
偶这几天太费神了,为了线性插值的问题,不过总算解决了!
文章也没写出来呐~
过几天再说吧`
 
对了,关于3D中的2D推荐用ID3DXSprite来解决,
不仅不耗费资源,而且使用起来相当方便。
 
////创建纹理
D3DXCreateTextureFromFileEx(pDev,"cross.png", //文件名
D3DX_DEFAULT, //文件宽,这里设为自动
D3DX_DEFAULT, //文件高,这里设为自动
D3DX_DEFAULT, //需要多少级mipmap,这里设为自动
0, //此纹理的用途
D3DFMT_UNKNOWN, //自动检测文件格式
D3DPOOL_MANAGED, //由DXGraphics管理
D3DX_DEFAULT, //纹理过滤方法,这里设为默认方法
D3DX_DEFAULT, //mipmap纹理过滤方法,这里设为默认方法
0xFFFFFFFF, //透明色颜色,ARGB格式,这里设为白色
NULL, //读出的图像格式存储在何变量中
NULL, //读出的调色板存储在何变量中
&tex);
//要创建的纹理

/////创建ID3DXSprite
D3DXCreateSprite(m_pd3dDevice,PointSprite);
////////绘制ID3DXSprite
Draw(tex, //前面创建的纹理
NULL, //源矩阵,就像DirectDraw中那个
NULL, //一个D3DXVECTOR2结构,表明在横竖方向分别扩大多少倍
NULL, //一个D3DXVECTOR2结构,绕何点旋转
0, //顺时针方向旋转多少弧度
&D3DXVECTOR2(397,297), //放到屏幕上何处
0xFFFFFFFF);
//图像的颜色,ARGB格式,这里设为不透明白色

这个是C下面的API,delphi在参数顺序有小小的不同而已,挺简单吧,比绘制三角形要爽多了,而且资源耗费很小,缺点就是只能在2D下使用,不随摄像头而改变视角~~要能改变的那那就更完美了。。
 
对了,showton ,你怎么不把自己的站点贴出来啊。我来贴吧:
http://home.g365.net/showton/
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部