游戏开发论坛

 找回密码
 立即注册
搜索
查看: 5852|回复: 19

请高手帮忙,D3D显存问题

[复制链接]

9

主题

25

帖子

25

积分

注册会员

Rank: 2

积分
25
发表于 2007-3-23 09:19:00 | 显示全部楼层 |阅读模式
大家好:
  我刚学VB游戏编程不久,眼下正在开发一个2D的ARPG游戏,使用DX8 D3D编程。游戏中需要加载很多2D图片,但加载过程中老是报错,根据错误代码我查了一下,说是显存不足。我用D3Dx.CreateTextureFromFileEx 载入,MipLevels 1,D3DPOOL_MANAGED。我游戏中用到的图片均为DDS(256色+阿尔法),所有图片加在一块是40M左右,我的显卡显存是128M的,怎么会不够呢?甚至拿到一个256M显存的机器上也报错,我该怎么解决这个问题?望高手能指教一二,最好能说明白点,我是新手,感激不尽

17

主题

153

帖子

153

积分

注册会员

Rank: 2

积分
153
发表于 2007-3-23 12:40:00 | 显示全部楼层

Re:请高手帮忙,D3D显存问题

最好是给出源码,大家帮你调试

这是一个基于DX8的2D引擎,你看看能不能用
http://www.matrix3d.cn/downloads/run.rar

89

主题

4036

帖子

4132

积分

论坛元老

Rank: 8Rank: 8

积分
4132
发表于 2007-3-23 13:03:00 | 显示全部楼层

Re:请高手帮忙,D3D显存问题

把D3D Runtime切到debug模式。用dbgview看看调试信息

8

主题

716

帖子

716

积分

高级会员

Rank: 4

积分
716
发表于 2007-3-23 18:00:00 | 显示全部楼层

Re:请高手帮忙,D3D显存问题

CreateTextureFromFileEx 会 将你非2的幂的图片 auto scale 到 2的幂
所以文件加起来40M,可能实际创建起来已经超过了128M
最好贴出来一段code方便查看问题

9

主题

25

帖子

25

积分

注册会员

Rank: 2

积分
25
 楼主| 发表于 2007-3-23 19:47:00 | 显示全部楼层

Re: 请高手帮忙,D3D显存问题

楼上提醒的是!这点没想到,但是40M的东西,再怎么2次幂也不至于128M显存不足吧?问题是它还时好时坏。但是在256M显存的机器上也出问题就不好解释了啊。

就是载入图片的时候出错,我这样载入:
Set Obj = D3Dx.CreateTextureFromFileEx(Ddev, FileName, D3DX_DEFAULT, D3DX_DEFAULT, 1, 0, D3DFMT_UNKNOWN, D3DPOOL_MANAGED, D3DX_FILTER_NONE, D3DX_FILTER_NONE, Color, ByVal 0, ByVal 0)

像传奇暗黑他们是怎么解决这个2次幂带来的显存问题的?像传奇可以同屏显示很多种的怪物,而这些怪物帖图都2次幂的话也很是问题。望高手指教

9

主题

25

帖子

25

积分

注册会员

Rank: 2

积分
25
 楼主| 发表于 2007-3-23 20:31:00 | 显示全部楼层

Re:请高手帮忙,D3D显存问题

这个D3D还真是问题啊,到是很多效果方便了不少,速度也快了不少,但这个显存成问题了。不像DDRAW,但DDRAW不能半透明混合是问题,速度也不快。要怎么解决呢?

89

主题

4036

帖子

4132

积分

论坛元老

Rank: 8Rank: 8

积分
4132
发表于 2007-3-23 21:00:00 | 显示全部楼层

Re: Re:请高手帮忙,D3D显存问题

千里马肝: Re:请高手帮忙,D3D显存问题

CreateTextureFromFileEx 会 将你非2的幂的图片 auto scale 到 2的幂
所以文件加起来40M,可能实际创建起来...


现在不会scale了。我今天测试过了。估计是其他原因。建议碰到问题用Debug runtime跑一下先。

32

主题

1583

帖子

1589

积分

金牌会员

Rank: 6Rank: 6

积分
1589
发表于 2007-3-23 21:13:00 | 显示全部楼层

Re:请高手帮忙,D3D显存问题

将你载入的图片尺寸都说一下。最好能有一点上下文代码。

还有程序中所有图片并不是一次加入显存的,需要的时候再载入。

D3DSprite用起来效果不错,但使用材质对象有时候确实有些不舒服。

所以很多时候我还是在使用DDraw7+D3D7来进行2D绘图,小游戏用GDI。

9

主题

25

帖子

25

积分

注册会员

Rank: 2

积分
25
 楼主| 发表于 2007-3-24 07:49:00 | 显示全部楼层

Re:请高手帮忙,D3D显存问题

DDraw7+D3D7 ?
要怎么弄?啊?
麻烦楼上的老师介绍一下
其实用D3DSprite主要是用来搞魔法效果的,支持半透明混合啊,然后就是效率高点。
Surface8帖图的效率很高啊,但是不支持透明色啊,如果能让Surface8支持透明色的话就无敌了,可以只用D3DSprite处理魔法,这样可以节省大量的显存,而且效率将有很大的提高。

9

主题

25

帖子

25

积分

注册会员

Rank: 2

积分
25
 楼主| 发表于 2007-3-24 10:31:00 | 显示全部楼层

Re:请高手帮忙,D3D显存问题

有没有办法让Surface8支持透明色?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-4-13 02:18

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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