cuốn sách gpt4 ai đã làm

c++ - D3DXERR_INVALIDDATA 发生

In lại Tác giả: Walker 123 更新时间:2023-11-28 03:35:32 hai mươi bốn 4
mua khóa gpt4 Nike

环境:
i5 750
DDR3 4GWin7 专业版 x64 sp1
DXSDK 9.0c 2010 年 6 月
GeForce GT240(驱动程序 275.33)512MB
MSVC 2008 sp1

项目:
使用 DXT5(A8R8G8B8) dds 格式的角色 Sprite 图像的游戏项目。
一个sprite每帧512*512大小,每帧互为文件。
(我们使用渲染的 3dsmax 卡通着色器建模动画。3dsmax 将每个帧渲染到其他文件上。)
并以这种方式加载:

HRESULT hr = D3DXCreateTextureFromFileEx( m_pd3dDevice //LPDIRECT3DDEVICE9 m_pd3dDevice
,filename_upper.c_str() //std::wstring filename_upper
,D3DX_DEFAULT_NONPOW2
,D3DX_DEFAULT_NONPOW2
,1
,0
,D3DFMT_A8R8G8B8
,D3DPOOL_MANAGED
,D3DX_FILTER_NONE
,D3DX_FILTER_NONE
,NULL
,&info // D3DXIMAGE_INFO info
,NULL
,&rsTexture //LPDIRECT3DTEXTURE9 rsTexture
);

câu hỏi:
hr 几乎是 S_OK。当加载很多文件时,有时会出现 D3DXERR_INVALIDDATA.
我在谷歌上搜索,发现这并不意味着内存不足。 (内存不足是 D3DERR_OUTOFVIDEOMEMORY hoặc E_OUTOFMEMORY)
许多答案说“文件损坏或格式异常”,但我不这么认为,因为错误发生在加载随机文件时。 ('load failed file'为下次加载成功,反之随机)。

有什么问题,我该怎么办?
我真的很 panic 救救我!

câu trả lời hay nhất

解释你的答案:

D3DFMT_A8R8G8B8 不是 D3DFMT_DXT5。该格式的名称暗示它包含 4 个 8 位的组件,因此是“R8”等。所以您将所有文件转换为 32 位,这占用了 DXT5 存储空间的 4 倍。

因为它恰好使用,简单地说,D3DFMT_FROM_FILE 意味着它将使用您在文件中指定的 DXT5。您也可以指定 D3DFMT_DXT5。这样做的好处是可以自动将您碰巧加载的任何 R8G8B8A8(或任何其他格式)文件转换为正确的 DXT5 压缩格式。

关于c++ - D3DXERR_INVALIDDATA 发生,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10980659/

hai mươi bốn 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress