www.pudn.com > packmk2.rar > noisemaker.h


#ifndef _c_noisemaker_ 
#define _c_noisemaker_ 
 
#include  
#include "parameterhandler.h" 
 
struct tc{ 
	float x, y; 
}; 
 
struct NOISEVERTEX 
{ 
	D3DXVECTOR3	position; 
}; 
 
#define D3DFVF_NOISEVERTEX (D3DFVF_XYZ) 
 
class noisemaker{ 
public: 
	noisemaker(const LPDIRECT3DDEVICE9 device, int sizeX, int sizeY, int octaves, int animlength, parameterhandler *prm);	 
	~noisemaker(); 
	void render(const D3DXMATRIXA16 *mProjector); 
	void render_projected_noise(const D3DXMATRIXA16 *mProjector); 
	void render_normalmap(); 
	void render_noise_octaves(); 
	LPDIRECT3DTEXTURE9			rendered_texture; 
	LPDIRECT3DTEXTURE9			rendered_normalmap; 
	LPD3DXRENDERTOSURFACE		RenderToSurface; 
	LPD3DXRENDERTOSURFACE		RenderToNormalmap; 
	LPDIRECT3DSURFACE9			rendered_texture_surface; 
	LPDIRECT3DTEXTURE9			noise_octaves[16]; 
private: 
	D3DXMATRIXA16 mProjector; 
	void prepare_textures(); 
	void create_vertexbuffer(); 
	void LoadEffect(); 
	int sizeX, sizeY, sourcesize, animlength, octaves, patches_x, patches_y;  
	float falloff; 
	LPDIRECT3DDEVICE9			device; 
	LPDIRECT3DVERTEXBUFFER9		VB,quad; 
	LPDIRECT3DINDEXBUFFER9		IB; 
	LPDIRECT3DTEXTURE9			source_texture; 
	 
	LPDIRECT3DSURFACE9			noise_octave_surface[16]; 
	LPDIRECT3DSURFACE9			backbuffer, rendertarget; 
 
	LPD3DXRENDERTOSURFACE		RenderToOctaves; 
	LPDIRECT3DSURFACE9			rendered_normalmap_surface; 
	LPD3DXEFFECT				anim_effect, normalmap_effect, noise_octaves_effect; 
 
	tc *offsets; 
	parameterhandler *prm; 
}; 
 
#endif