游戏开发论坛

 找回密码
 立即注册
搜索
查看: 4293|回复: 6

纹理加载的问题,专业向

[复制链接]

1

主题

2

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2012-7-9 23:45:00 | 显示全部楼层 |阅读模式
directx加载图片用函数
HRESULT hresult=D3DXCreateTextureFromFileEx(g_d3dD,file,D3DX_FROM_FILE ,D3DX_FROM_FILE ,1,0,D3DFMT_UNKNOWN,D3DPOOL_DEFAULT,D3DX_DEFAULT,D3DX_DEFAULT,0,0,0,&imageinfo[imagename].g_d3dTextrue);
在部分win7下正常,部分win7则出现载入失败,错误为D3DERR_NOTAVAILABLE,错误图片是一张5M的地形贴图,尺寸1088*6800,不影响之后的运行,只是游戏中相应的地形纹理没了;而xp则在这张图片上出现同样的错误,之后其他大部分的图片加载均返回错误D3DERR_OUTOFVIDEOMEMORY,严重影响了正常运行。
如果把上面的D3DPOOL_DEFAULT变成D3DPOOL_MANAGED,win7没有大量测试过无法下结论;xp在那张5M图片出现同样的错误D3DERR_NOTAVAILABLE,但不影响之后的加载和运行,同样在游戏中相应的地形纹理没了
加载的图片总共100M左右,第一种方法加载好后内存占用100M左右,第二种方法则是将近1G,但对流畅性无影响
请问如何解决这个问题并正常加载,另外如果这种加载方式不好的话,那该换成什么方式?

11

主题

95

帖子

658

积分

高级会员

Rank: 4

积分
658
发表于 2012-7-12 09:13:00 | 显示全部楼层

Re:纹理加载的问题,专业向

集显和独显有时候也会影响!    D3DX_FROM_FILE 改为 D3DX_DEFAULT_NONPOW2试试!  抑或
把D3DPOOL_MANAGED改为D3DPOOL_SYSTEM(把纹理直接加到系统内存去)试试!

89

主题

4036

帖子

4132

积分

论坛元老

Rank: 8Rank: 8

积分
4132
发表于 2012-7-12 11:10:00 | 显示全部楼层

Re:纹理加载的问题,专业向

我X。这问题还叫专业 ?
。。。回头你是不是还准备整一张68000x68000的纹理加载一下试试啊。。。

0

主题

11

帖子

15

积分

新手上路

Rank: 1

积分
15
发表于 2012-7-13 10:23:00 | 显示全部楼层

Re:纹理加载的问题,专业向

1、显卡所支持的贴图最大值是有限制的,看具体显卡
2、显存大小是有限的,D3DPOOL_DEFAULT是表示放到显存,多了当然装不下,D3DERR_OUTOFVIDEOMEMORY不是已经报告显存不够的错误了么
3、100M图片是jpg格式?压缩格式展开成位图会大的多,看描述你显卡的显存估计就是1G吧
合理的做法是,使用D3DPOOL_MANAGED,但要按需从文件创建贴图,并使用缓存机制以减少创建和释放的次数,更好的做法是异步预加载贴图

1

主题

2

帖子

0

积分

新手上路

Rank: 1

积分
0
 楼主| 发表于 2012-7-29 18:15:00 | 显示全部楼层

Re:纹理加载的问题,专业向

首先多谢各位高手们指教了,这个问题后来没过几天就解决了,方法挺傻冒的
1.首先是加载函数
D3DXCreateTextureFromFileEx(g_d3dD,file,D3DX_DEFAULT_NONPOW2 ,D3DX_DEFAULT_NONPOW2 ,1,0,D3DFMT_UNKNOWN,D3DPOOL_MANAGED,D3DX_DEFAULT,D3DX_DEFAULT,0,0,0,&imageinfo[imagename].g_d3dTextrue);
用了D3DX_DEFAULT_NONPOW2和D3DPOOL_MANAGED这两个参数
如果改动这两个参数,不能保证在其他电脑上都可以正常加载
2.这样加载后内存是1G,太大了,所以在加载时把动画贴图都去掉,在需要播放的时候再加载对应的动画贴图,播放完后释放,这样内存占用500M左右

有查到说图片长宽超过4800什么之后会不能加载,但像上面这样设置后所有图片都正常加载了,当然2楼那个68000x68000估计是肯定不可能加载成功的
用D3DPOOL_DEFAULT加载的话,首先xp无论显卡多高端绝对出D3DERR_NOTAVAILABLE,之后就D3DERR_OUTOFVIDEOMEMORY;win7要看显卡,本人9600M GS,512M显存的N卡没问题,较差的9300M也没问题,但一款Intel的756M的显卡就不行,另外一款可以流畅玩战地3的显卡也不行。

所有图片均为png,总大小127M;动画贴图149张,共46M,动画贴图大小均为888x1184
最后说明,实际效果就是“装甲军团”的样子,只是多加了不少东西,所以内存相比变大了

3

主题

81

帖子

209

积分

中级会员

Rank: 3Rank: 3

积分
209
QQ
发表于 2012-12-21 17:46:05 | 显示全部楼层
内存占用500M。。。哥哥你够给力的。。。

85

主题

824

帖子

878

积分

高级会员

Rank: 4

积分
878
QQ
发表于 2012-12-24 09:26:34 | 显示全部楼层
哥们,你这游戏丢出去,全国估计80%以上的电脑都不能正常运行
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-6-12 18:03

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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