困惑了很久的函数D3DXCreateTextureFromFileInMemoryEx

原创 2016年08月28日 14:30:58

最近研究某游戏的时候发现通过D3DXCreateTextureFromFileInMemoryEx这个函数加载的dds贴图 于是乎 就各种找资料 各种不知道怎么用的。 对d3d不熟悉 各种找教程 今天终于加载成功了。 我的目的很简单 就在我的demo里面可以加载成功 然后进行反汇编 去看游戏的 。。。


贴出代码 


LPDIRECT3DTEXTURE9 g_pTexture   = NULL;    // 纹理接口对象

void Initializebmp()
{
	FILE* pFile = fopen("E:\\dxts1.jpg", "rb");
	fseek(pFile, 0, SEEK_END);
	int FileLen = ftell(pFile);
	fseek(pFile, 0, SEEK_SET);

	char* pData = new char[FileLen];
	fread(pData, FileLen, 1, pFile);

	D3DXIMAGE_INFO info;
	D3DCOLOR colorkey = 0x000000ff;
	D3DXCreateTextureFromFileInMemoryEx(
		g_pd3dDevice,
		pData,
		FileLen,
		0,
		0,
		0,
		0,
		D3DFMT_UNKNOWN,
		D3DPOOL_MANAGED,
		D3DX_DEFAULT,
		D3DX_DEFAULT,
		D3DCOLOR_XRGB(0, 0, 0),
		&info,
		NULL,
		&g_pTexture);

}


  其实到最后才发现 不管是通过什么方法加载的  

D3DXCreateTextureFromFile 原始是直接加载本地图片  但是在游戏里面很少用到这个函数的 基本都是在内存中加载纹理的

	//--------------------------------------------------------------------------------------
	// 【纹理绘制四步曲之三】:纹理的创建
	//--------------------------------------------------------------------------------------
	//D3DXCreateTextureFromFile(g_pd3dDevice, L"pal5q.jpg", &g_pTexture);
	Initializebmp();
	// 设置材质


然后下面启用纹理就好了。

<pre name="code" class="cpp">g_pd3dDevice->BeginScene();                     // 开始绘制

	//--------------------------------------------------------------------------------------
	// 【Direct3D渲染五步曲之三】:正式绘制,利用顶点缓存绘制图形
	//--------------------------------------------------------------------------------------

	g_pd3dDevice->SetStreamSource( 0, g_pVertexBuffer, 0, sizeof(CUSTOMVERTEX) );//把包含的几何体信息的顶点缓存和渲染流水线相关联
	g_pd3dDevice->SetFVF( D3DFVF_CUSTOMVERTEX );//指定我们使用的灵活顶点格式的宏名称
	g_pd3dDevice->SetIndices(g_pIndexBuffer);//设置索引缓存
	//--------------------------------------------------------------------------------------
	// 【纹理绘制四步曲之四】:纹理的启用
	//--------------------------------------------------------------------------------------
	g_pd3dDevice->SetTexture(0, g_pTexture);  //启用纹理

	g_pd3dDevice->DrawIndexedPrimitive(D3DPT_TRIANGLELIST, 0, 0, 24, 0, 12);//利用索引缓存配合顶点缓存绘制图形






版权声明:本文为博主原创文章,转载请注明出处

相关文章推荐

WEB服务器、应用程序服务器、HTTP服务器有何区别?IIS、Apache、Tomcat、Weblogic、WebSphere都各属于哪种服务器,这些问题困惑了很久,今天终于梳理清楚了

WEB服务器、应用程序服务器、HTTP服务器有何区别?IIS、Apache、Tomcat、Weblogic、WebSphere都各属于哪种服务器,这些问题困惑了很久,今天终于梳理清楚了:  ...

纠结了很久的js回调函数

自学jquery的时候,看到一英文词(Callback),顿时背部隐隐冒冷汗。迅速google之,发现原来中文翻译成回调。也就是回调函数了。不懂啊,于是在google回调函数,发现网上的中文解释实在是...

金额小写转大写的函数(连续使用很久了)

create or replace function F_upper_money(p_num in number default null) return nvarchar2 is /*Ver:1...

困扰我很久的左值和右值

百度百科搜索出来的,关于什么是左值: C/C++语言中可以放在赋值符号左边的变量,即具有对应的可以由用户访问的存储单元,并且能够由用户去改变其值的量。或者说左值是代表一个内存地址值,并且通过这个内存...

Windows7下安装Caffe(GPU):试了很久的失败版本(可参考)

这是个失败的版本,既然记录下来了,就保留下来,总体来说没错,只是可能CUDA版本不合适。 可以参考下。 一. 安装CUDA 1. 下载 https://developer.nvidia.com/...
  • yyz051
  • yyz051
  • 2017年01月29日 09:31
  • 606

很久之前关于分治思想的一个简单程序

算法的分治思想就是将一个大问题差分成相似的n个小问题,同时进行多步,提高效率 //分治思想实现#include "stdio.h"int main(){ int i, j, k; int a...

CefSharp V43 版本ToolTip功能和工程文件.csproj神秘关系(摸索很久)

废话不多说,这篇文章写给玩CefSharp已经至少会看Demo的进阶级玩家,当你对这个开源浏览器架构捣鼓非常开心的时候,你会发现问什么官方的WInform Demo完美的实现了网页title属性也就是...

数据库范式应用(整理硬盘时找到的,虽然很久但还很有用)

引言 数据库的设计范式是数据库设计所需要满足的规范,满足这些规范的数据库是简洁的、结构明晰的,同时,不会发生插入(insert)、删除(delete)和更新(update)操作异常。反之则是乱七八...
  • dotfun
  • dotfun
  • 2011年05月03日 14:31
  • 454

拖欠很久的堆

#include #include using namespace std; //最小堆 template class Heap { public: typedef T elemtype; ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:困惑了很久的函数D3DXCreateTextureFromFileInMemoryEx
举报原因:
原因补充:

(最多只允许输入30个字)