D3DXCreateTextureFromFileEx中参数介绍

本文深入解析了DirectX中D3DXCreateTextureFromFileEx函数的使用方法,包括其14个参数的含义及作用,并通过实例展示了如何在场景中加载和使用纹理,特别强调了关键颜色设置和透明效果的应用。
D3DXCreateTextureFromFileEx这个函数有14个参数,在MSDN中的原型(后面中文解释为本人理解,仅供参考, 原文请查看MSDN ):
HRESULT D3DXCreateTextureFromFileEx(
LPDIRECT3DDEVICE9 pDevice,         //调入是IDirect3DDevice9对象指针
LPCTSTR pSrcFile,                    //文件名
UINT Width,                                //图像的宽
UINT Height,                               //图像的长
UINT MipLevels,                         //图片的图层,一般用D3DX_DEFAULT,但也用1的
DWORD Usage,               //设定这个纹理的使用方法,这个参数可以是0,                                   //D3DUSAGE_RENDERTARGET,和
                                        //D3DUSAGE_DYNAMIC。一般用的是0,也可以使用 D3DUSAGE_DYNAMIC,
                                      //这样可以动态改变纹理中的数据。如果纹理不需要动态性改变,就不需要设定这
                                       //个参数为D3DUSAGE_DYNAMIC。
D3DFORMAT Format,             // 纹理的格式,可以自己定义,也可以直接定义为D3DFMT_UNKNOWN,让程序
                                                  //在载入图像文件时定义象素深度
D3DPOOL Pool,                     //这是如何管理这些纹理,一般使用D3DPOOL_MANAGED
DWORD Filter,                      //图像像素的过滤方式
DWORD MipFilter,               //MIP的像素过滤方式
D3DCOLOR ColorKey,          //透明色,设定这个颜色,在显示时,这图像中的这个颜色将忽略
D3DXIMAGE_INFO * pSrcInfo,             //记录载入图片信息
PALETTEENTRY * pPalette,                  //记录调色板信息
LPDIRECT3DTEXTURE9 * ppTexture //用来储存载入图片的纹理对象实例
);
在上次的公告板中,调用为:
D3DXCreateTextureFromFileEx(
     Device,
    "Billboard.bmp", 
     D3DX_DEFAULT, 
     D3DX_DEFAULT, 
     D3DX_DEFAULT, 
     0, 
     D3DFMT_A1R5G5B5, 
     D3DPOOL_MANAGED, 
     D3DX_FILTER_TRIANGLE, 
     D3DX_FILTER_TRIANGLE,
     D3DCOLOR_RGBA(0,0,0,255), 
     NULL, 
     NULL, 
     &BillboardTexture);
在这里,关键颜色值为D3DFMT_A1R5G5B5(就是RGB都少于5的 颜色),将载入的图片里面的关键颜色值设置为透明色.只要在画时加上
Device->SetRenderState(D3DRS_ALPHATESTENABLE, TRUE); //启用alpha测试
就可以让指定的颜色透明。在公告和粒子系统中可能常用到这个函数。
`CompileShader` 函数在Direct3D 11中用于编译hlsl (High-Level Shading Language)源代码到特定类型的顶点着色器、几何着色器、域着色器、 hull shader、计算着色器或者像素着色器。该函数的具体用法如下: ```cpp HRESULT CompileShader( _In_ ID3DBlob** ppBlobOut, _In_reads_(pSrcLength) LPCSTR szSrc, _In_ const D3D_SHADER_MACRO* pMacros, _In_ DWORD Flags, _In_opt_z_ LPCSTR Profile ); ``` 参数解析: 1. **ppBlobOut**: `ID3DBlob**` 类型的指针,返回编译后的中间表示(Middle-End Representation, MER)数据,通常作为后续操作如创建Shader对象的输入。 2. **szSrc**: `LPCSTR` 指向C/C++源代码的常量指针。 3. **pMacros**: `D3D_SHADER_MACRO*` 类型的结构体数组,允许传递预处理器宏定义。每个元素包括宏名和宏值。 4. **Flags**: 一个`DWORD`,包含了编译选项,比如`D3DCOMPILE_DEBUG`开启调试信息,`D3DCOMPILE_SKIP_OPTIMIZATION`禁用优化等。 5. **Profile**: 可选的`LPCSTR`,指定编译时使用的API版本(如VS_4_0,PS_4_0等),如果为空则使用默认版本。 要实际调用这个函数,你需要创建一个`ID3DBlob`实例来接收编译结果,并提供合适的编译选项和profile,如下所示: ```cpp ID3DBlob* vertexShaderBlob; if(FAILED(D3DCompile(szVertexShaderCode, // 你的源代码 strlen(szVertexShaderCode), NULL, // 使用默认宏 "VSMain", "vs_5_0", D3DCOMPILE_DEBUG | D3DCOMPILE_SKIP_OPTIMIZATION, // 编译选项 0, // 不分配内存,由库管理 &vertexShaderBlob))) { // 处理编译错误 } ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值