您的位置:首页 > 其它

Directx10 龙书笔记- 第7章课后题 实现火焰动画

2014-09-22 00:20 232 查看
火焰的图片我是没找到,找到了几张雷电的,就在d3dcoder.net 的directx10那本书代码下载的Bolt Animations for Chapter 9 里面

里面很多张图片,由于c++也是初学,一时来不及弄字符串拼接的函数。 只能定义很多个帧bmp 然后一个一个载入了

具体代码是建立在那个"crate" 例子工程, 就是那个木箱子的代码基础上。

添加的代码如下:

ID3D10ShaderResourceView* mDiffusePic[9];
我定义了一个能装9张图片的shaderview

然后开始从文件载入

HR(D3DX10CreateShaderResourceViewFromFile(md3dDevice, 
			L"BoltAnim/Bolt001.bmp", 0, 0, &mDiffusePic[0], 0 ));
	HR(D3DX10CreateShaderResourceViewFromFile(md3dDevice, 
		L"BoltAnim/Bolt002.bmp", 0, 0, &mDiffusePic[1], 0 ));
	HR(D3DX10CreateShaderResourceViewFromFile(md3dDevice, 
		L"BoltAnim/Bolt003.bmp", 0, 0, &mDiffusePic[2], 0 ));
	HR(D3DX10CreateShaderResourceViewFromFile(md3dDevice, 
		L"BoltAnim/Bolt004.bmp", 0, 0, &mDiffusePic[3], 0 ));
	HR(D3DX10CreateShaderResourceViewFromFile(md3dDevice, 
		L"BoltAnim/Bolt005.bmp", 0, 0, &mDiffusePic[4], 0 ));
	HR(D3DX10CreateShaderResourceViewFromFile(md3dDevice, 
		L"BoltAnim/Bolt006.bmp", 0, 0, &mDiffusePic[5], 0 ));
	HR(D3DX10CreateShaderResourceViewFromFile(md3dDevice, 
		L"BoltAnim/Bolt007.bmp", 0, 0, &mDiffusePic[6], 0 ));
	HR(D3DX10CreateShaderResourceViewFromFile(md3dDevice, 
		L"BoltAnim/Bolt008.bmp", 0, 0, &mDiffusePic[7], 0 ));
	HR(D3DX10CreateShaderResourceViewFromFile(md3dDevice, 
		L"BoltAnim/Bolt009.bmp", 0, 0, &mDiffusePic[8], 0 ));
	HR(D3DX10CreateShaderResourceViewFromFile(md3dDevice, 
		L"BoltAnim/Bolt001.bmp", 0, 0, &mDiffuseMapRV, 0 ));
	HR(D3DX10CreateShaderResourceViewFromFile(md3dDevice, 
		L"WoodCrate01.dds", 0, 0, &mDiffuseMapRV1, 0 ));
	HR(D3DX10CreateShaderResourceViewFromFile(md3dDevice, 
		L"defaultspec.dds", 0, 0, &mSpecMapRV, 0 ));


如果你知道如果将BoltAnim/Bolt00+i+.bmp这种拼接成函数的参数请告诉我,因为这样就可以调用那几十张图片了,没必要我这样麻烦的复制9次。

当所有东西存好在mDiffusePic里面过后,就是开始绘制了。

最开始那个木箱盒子是绘制的固定的一个纹理贴图 mDiffuseMapRV

这里我们改用刚定义的mDiffusePic. 而且是在drawScene函数里面 每隔一定的时间换一张图片

这样快速的就形成了帧动画了。

// Every quarter second, generate a random wave.
	static float t_base = 0.0f;
	static int flag=0;
	if( (mTimer.getGameTime() - t_base) >= 0.15f )
	{
		t_base += 0.15f;
		mfxDiffuseMapVar->SetResource(mDiffusePic[(flag++)%9]);
	}


主要就是以上这个函数了。

由于是我的读书笔记,所以没有全部工程的源码给出。只是方便同在学习这本书的童鞋查缺补漏。 以上都是核心的需要注意的代码了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐