注:限于翻译水平限制,详情请查阅MSDN

D3DXCreateTextureFromFileInMemoryEx 函数
从内存文件创建一个纹理,这是个比D3DXCreateTextureFromFileInMemory更高级的函数。

语法
HRESULT WINAPI
    D3DXCreateTextureFromFileInMemoryEx(
        LPDIRECT3DDEVICE9         pDevice,
        LPCVOID                   pSrcData,
        UINT                      SrcDataSize,
        UINT                      Width,
        UINT                      Height,
        UINT                      MipLevels,
        DWORD                     Usage,
        D3DFORMAT                 Format,
        D3DPOOL                   Pool,
        DWORD                     Filter,
        DWORD                     MipFilter,
        D3DCOLOR                  ColorKey,
        D3DXIMAGE_INFO*           pSrcInfo,
        PALETTEENTRY*             pPalette,
        LPDIRECT3DTEXTURE9*       ppTexture);

注:LPDIRECT3DDEVICE8和LPDIRECT3DTEXTURE9因SDK版本而异。

参数
pDevice [输入]
类型: LPDIRECT3DDEVICE9

IDirect3DDevice9接口的指针,代表与纹理关联的设备。

pSrcData [输入]
类型: LPCVOID

用以创建纹理的内存文件的指针。

SrcDataSize [输入]
类型: UINT

内存文件的大小,以字节为单位。

Width [输入]
类型: UINT

宽度,以像素为单位。如果值为零或D3DX_DEFAULT,则尺寸由文件决定。

Height [输入]
类型: UINT

高度,以像素为单位。如果值为零或D3DX_DEFAULT,则尺寸由文件决定。

MipLevels [输入]
类型: UINT

请求的Mip层级(mip levels), 如果值为零或D3DX_DEFAULT,完整mipmap链将被创建。

Usage [输入]
类型: DWORD

0,D3DUSAGE_RENDERTARGET或D3DUSAGE_DYNAMIC。设此标志为D3DUSAGE_RENDERTARGET指明表面作为一个渲染目标。资源便可传递给

SetRenderTarget方法的pNewRenderTarget参数。如果D3DUSAGE_RENDERTARGET和D3DUSAGE_DYNAMIC都不置位,则Pool必须设为

D3DPOOL_DEFAULT,一个程序应该调用CheckDeviceFormat来检查设备是否支持此操作。关于动态纹理的更多信息,参阅使用动态纹理

(Dynamic Textures)。

Format [输入]
类型: D3DFORMAT

枚举类型D3DFORMAT的成员,描述纹理的像素模式。返回的纹理的格式可能与Format指定的不同。应用程序应该检查返回的纹理的格式。

如果设为D3DFMT_UNKNOWN,则格式由文件决定。如果设为D3DFMT_FROM_FILE,则格式完全与文件相同,而格式与设备性能冲突时函数会失

败。

Pool [输入]
类型: D3DPOOL

枚举类型D3DPOOL成员,描述纹理应该置于何种内存类型。

Filter [输入]
类型: DWORD

一个或多个标志的组合以控制图形的过滤,设置D3DX_DEFAULT位等效于设置D3DX_FILTER_TRIANGLE | D3DX_FILTER_DITHER。任何有效的标

志应为D3DX_FILTER之一。

MipFilter [输入]
类型: DWORD

一个或多个标志的组合以控制图形的过滤,设置D3DX_DEFAULT位等效于设置D3DX_FILTER_BOX。任何有效的标志应为D3DX_FILTER之一。另

外,使用27-31来指定要忽略的mip层级(从mipmap链的顶部开始),当一个.dds纹理被加载到内存,允许最多忽略32个层级。

ColorKey [输入]
类型: D3DCOLOR

被透明黑色取代的D3DCOLOR值,或设为0以禁用透明色。它总是一个32位ARGB颜色,与源文件的图像格式无关。Alpha字段是有意义的且常

常设为FF填充(屏蔽)透明色,所以,要不透明黑色,其值应取0xFF000000。

pSrcInfo [输入,输出]
类型: D3DXIMAGE_INFO*

D3DXIMAGE_INFO结构的指针,用以填充原始文件数据的描述,可设为NULL。

pPalette [输出]
类型: PALETTEENTRY*

PALETTEENTRY结构的指针,代表一个要填充的256色调色板,或设为NULL,见备注。

ppTexture [输出]
类型: LPDIRECT3DTEXTURE9*

IDirect3DTexture9接口指针的地址,代表创建的纹理对象。

返回值
类型: HRESULT

如果函数执行成功,返回值是D3D_OK。如果函数执行失败,返回值可能是如下值之一:
D3DERR_NOTAVAILABLE,D3DERR_OUTOFVIDEOMEMORY,D3DERR_INVALIDCALL,D3DXERR_INVALIDDATA,E_OUTOFMEMORY。

备注
次函数支持如下文件格式:.bmp,.dds,.dib,.hdr,.jpg,.pfm,.png,.ppm和.tga。见D3DXIMAGE_FILEFORMAT。

关于PALETTEENTRY的详情,参考平台SDK。注意在DirectX 8.0,PALETTEENTRY结构的成员peFlags并不是平台SDK文档所说的那样工作。

peFlags成员现在是8位调色板格式的alpha通道。

当忽略mipmap层级来夹在一个.dds文件时,使用宏D3DX_SKIP_DDS_MIP_LEVELS来生成MipFilter的值。该宏使用忽略的层级数和过滤类型作

为参数,返回一个能传递给MipFilter参数的过滤值。

需求条件
文件头
 D3dx9tex.h

 D3dx9.lib

参阅
D3DXCreateTextureFromFileInMemory
D3DX9的纹理函数

D3DXCreateTextureFromFileInMemoryEx函数的更多相关文章

  1. D3D9和OpenGL加载纹理图片的API是哪个?

    D3D9 创建一个空纹理,当返回 S_OK 且 ppTexture 纹理对象指针不为 NULL 时,则表示该函数调用成功. HRESULT D3DXCreateTexture( _In_  LPDIR ...

  2. Python 小而美的函数

    python提供了一些有趣且实用的函数,如any all zip,这些函数能够大幅简化我们得代码,可以更优雅的处理可迭代的对象,同时使用的时候也得注意一些情况   any any(iterable) ...

  3. 探究javascript对象和数组的异同,及函数变量缓存技巧

    javascript中最经典也最受非议的一句话就是:javascript中一切皆是对象.这篇重点要提到的,就是任何jser都不陌生的Object和Array. 有段时间曾经很诧异,到底两种数据类型用来 ...

  4. JavaScript权威指南 - 函数

    函数本身就是一段JavaScript代码,定义一次但可能被调用任意次.如果函数挂载在一个对象上,作为对象的一个属性,通常这种函数被称作对象的方法.用于初始化一个新创建的对象的函数被称作构造函数. 相对 ...

  5. C++对C的函数拓展

    一,内联函数 1.内联函数的概念 C++中的const常量可以用来代替宏常数的定义,例如:用const int a = 10来替换# define a 10.那么C++中是否有什么解决方案来替代宏代码 ...

  6. 菜鸟Python学习笔记第一天:关于一些函数库的使用

    2017年1月3日 星期二 大一学习一门新的计算机语言真的很难,有时候连函数拼写出错查错都能查半天,没办法,谁让我英语太渣. 关于计算机语言的学习我想还是从C语言学习开始为好,Python有很多语言的 ...

  7. javascript中的this与函数讲解

    前言 javascript中没有块级作用域(es6以前),javascript中作用域分为函数作用域和全局作用域.并且,大家可以认为全局作用域其实就是Window函数的函数作用域,我们编写的js代码, ...

  8. 复杂的 Hash 函数组合有意义吗?

    很久以前看到一篇文章,讲某个大网站储存用户口令时,会经过十分复杂的处理.怎么个复杂记不得了,大概就是先 Hash,结果加上一些特殊字符再 Hash,结果再加上些字符.再倒序.再怎么怎么的.再 Hash ...

  9. JS核心系列:浅谈函数的作用域

    一.作用域(scope) 所谓作用域就是:变量在声明它们的函数体以及这个函数体嵌套的任意函数体内都是有定义的. function scope(){ var foo = "global&quo ...

随机推荐

  1. asp.net 给按钮 增加事件

    一个页面,有查询,审核,删除,取消审核 按钮,每次结尾 处都要 调用 Initdata方法,重新刷新数据 繁琐哇,我的解决方法是 protected void Page_Load(object sen ...

  2. GetDirectories 出错的解决方法

    我想找到D盘里面所有 "*.pst文件,类似 windows 下的磁盘搜索功能, using System.IO; Directory.GetFiles(@"d:\", ...

  3. php 基础算法(用*表示金字塔)通过hash 比較两个数组同样的数

    当作为一名php 程序猿,每天总与数据库打交道,做着最底层的程序猿的工作,開始着手研究一些算法,希望自己能在计算机的道路上走的更远.事实上我更喜欢管理,希望自己能作为一个卓越的管理者,但并不影响我对技 ...

  4. C# ---- 串口数据YSI实例

    原文:C# ---- 串口数据YSI实例 C#----串口数据接收发送中,发送接收数据已经可以模拟了. 本次YSI实例过程中 主要是:类型转换问题 .计算校验码 一.不同设备不同的规则,本次实例代码如 ...

  5. 从实例谈OOP、工厂模式和重构

    有了翅膀才能飞, 欠缺灵活的代码就象冻坏了翅膀的鸟儿.不能飞翔,就少了几许灵动的气韵.我们需要给代码带去温暖的阳光, 让僵冷的翅膀重新飞起来. 结合实例, 通过应用OOP.设计模式和重构,你会看到代码 ...

  6. leetcode第12题--Integer to Roman

    Problem: Given an integer, convert it to a roman numeral. Input is guaranteed to be within the range ...

  7. 我的Android 4 学习系列之使用 Internet 资源

    目录 连接Internet资源 分析XML资源 使用Download Manager下载文件 查询Download manager 使用Account Manager 对 Google App Eng ...

  8. git 简单教程更新

    0.初始化 $ git config --global user.name "xxx" $ git config --global user.email "xxx@gma ...

  9. shell脚本中执行另一个shell脚本

    分类: 可以在一个shell脚本中执行另一个shell脚本(或非可执行文件,主要用于取得一些变量的值),方法是: . 文件名(包括路径) 或 变量=文件名(包括路径) . $变量   注意,圆点后面有 ...

  10. Ibatis根据id获取拼接好的sql语句案例

    //得到sql语句: public virtual string GetSqlStatement(string statementName, object paramObject) { ISqlMap ...