游戏开发论坛

 找回密码
 立即注册
搜索
查看: 3179|回复: 3

问一个D3DXCreateTextureFromFileInMemoryEx函数的问题

[复制链接]

10

主题

30

帖子

191

积分

注册会员

Rank: 2

积分
191
发表于 2007-7-23 17:45:00 | 显示全部楼层 |阅读模式
我用D3DXCreateTextureFromFileInMemoryEx函数加载内存中的纹理为什么总是失败。
我是这么作的
BITMAPFILEHEADER bmpheader;
        BITMAPINFOHEADER bmpinfo;
        BYTE* bmpdata;
        FILE* fp;
        fp = fopen(filename,"rb");
        if(NULL ==        fp)
        {
                return;
        }
        fread(&bmpheader,sizeof(BITMAPFILEHEADER),1,fp);
        fread(&bmpinfo,sizeof(BITMAPINFOHEADER),1,fp);
        bmpdata= new BYTE[bmpinfo.biWidth*bmpinfo.biHeight/*bmpinfo.biSizeImage*/];
        fseek(fp,bmpheader.bfOffBits,0);
        fread(bmpdata,bmpinfo.biWidth*bmpinfo.biHeight/*bmpinfo.biSizeImage*/,1,fp);
D3DXCreateTextureFromFileInMemoryEx (g_d3ddevice,(LPVOID*)bmpdata,bmpinfo.biWidth*bmpinfo.biHeight,
                bmpinfo.biWidth, bmpinfo.biHeight, 1, 0, D3DFMT_A8R8G8B8,
                D3DPOOL_MANAGED, D3DX_FILTER_BOX, D3DX_DEFAULT,
                color, NULL, NULL, &g_texture);
这是不是这种方式。还是要将数据转成HBITMAP呀 [em24] [em24]

8

主题

34

帖子

34

积分

注册会员

Rank: 2

积分
34
发表于 2007-7-24 10:08:00 | 显示全部楼层

Re:问一个D3DXCreateTextureFromFileInMemoryEx函数的问题

D3DXCreateTextureFromFileInMemoryEx
中的参数的数据指针是指整个文件的数据的首地址,不是颜色数据的首地址

2

主题

141

帖子

141

积分

注册会员

Rank: 2

积分
141
发表于 2007-7-24 11:30:00 | 显示全部楼层

Re:问一个D3DXCreateTextureFromFileInMemoryEx函数的问题

正确的作法是用CreateFile或取文件HANDLE,
用ReadFile读入整个文件到一个buffer,比如是BYTE *inBuffer;
读入的时候也知道了这个文件的大小DWROD dwReadSizeAll;
然后CloseHandle
then
D3DXCreateTextureFromFileInMemoryEx

根本不需要BITMAP头
你是画蛇添足拉
DX的纹理要用CreateTexture创建,GDI或传统Windows那套HBITMAP是没用的

10

主题

30

帖子

191

积分

注册会员

Rank: 2

积分
191
 楼主| 发表于 2007-7-26 08:40:00 | 显示全部楼层

Re:问一个D3DXCreateTextureFromFileInMemoryEx函数的问题


知道了
谢谢了
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-25 16:57

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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