⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 effectstatemanager.h

📁 java实现的简单的分形树。简单易学!是学习分形知识的很好的例子。其java语法简单
💻 H
字号:
// --------------------------------------------------------------------------
// Dingus project - a collection of subsystems for game/graphics applications
// --------------------------------------------------------------------------

#ifndef __FX_STATE_MANAGER_H
#define __FX_STATE_MANAGER_H

namespace dingus {

class CEffectStateManager : public ID3DXEffectStateManager/*, public CRefCounted*/ {
public:
	CEffectStateManager();
	void reset();
	
	// ID3DXEffectStateManager
    STDMETHOD(SetTransform)( D3DTRANSFORMSTATETYPE state, const D3DMATRIX* matrix );
    STDMETHOD(SetMaterial)( const D3DMATERIAL9* material );
    STDMETHOD(SetLight)( DWORD index, const D3DLIGHT9* light );
    STDMETHOD(LightEnable)( DWORD index, BOOL enable );
    STDMETHOD(SetRenderState)( D3DRENDERSTATETYPE state, DWORD value );
    STDMETHOD(SetTexture)( DWORD stage, IDirect3DBaseTexture9* texture );
    STDMETHOD(SetTextureStageState)( DWORD stage, D3DTEXTURESTAGESTATETYPE type, DWORD value );
    STDMETHOD(SetSamplerState)( DWORD sampler, D3DSAMPLERSTATETYPE type, DWORD value );
    STDMETHOD(SetNPatchMode)( float numSegments );
    STDMETHOD(SetFVF)( DWORD fvf );
    STDMETHOD(SetVertexShader)( IDirect3DVertexShader9* shader );
    STDMETHOD(SetVertexShaderConstantF)( UINT registerIdx, const float* data, UINT registerCount );
    STDMETHOD(SetVertexShaderConstantI)(THIS_ UINT registerIdx, const int *data, UINT registerCount );
    STDMETHOD(SetVertexShaderConstantB)(THIS_ UINT registerIdx, const BOOL *data, UINT registerCount );
    STDMETHOD(SetPixelShader)( IDirect3DPixelShader9* shader );
    STDMETHOD(SetPixelShaderConstantF)( UINT registerIdx, const float *data, UINT registerCount );
    STDMETHOD(SetPixelShaderConstantI)( UINT registerIdx, const int *data, UINT registerCount );
    STDMETHOD(SetPixelShaderConstantB)( UINT registerIdx, const BOOL *data, UINT registerCount );

    // IUnknown
    STDMETHOD(QueryInterface)( REFIID iid, LPVOID *ppv ) {
		if( iid == IID_ID3DXEffectStateManager ) {
			*ppv = this;
			AddRef();
			return NOERROR;
		}
		return ResultFromScode(E_NOINTERFACE);
	}
    STDMETHOD_(ULONG, AddRef)() {
		//return incRef();
		return 1;
	}
    STDMETHOD_(ULONG, Release)() {
		//return decRef();
		return 1;
	}

private:
	enum { NUM_LIGHTS_CACHED = 8 };
	enum { NUM_RENDERSTATES_CACHED = 256 };
	enum { NUM_TEXTURES_CACHED = 4 };
	enum { NUM_TEXSTATES_CACHED = 32 };
	enum { NUM_SAMPLERS_CACHED = 8 };
	enum { NUM_SAMPSTATES_CACHED = 16 };

	BOOL	mLightEnabled[NUM_LIGHTS_CACHED];
	
	DWORD	mRenderStates[NUM_RENDERSTATES_CACHED];
	BOOL	mGotRenderStates[NUM_RENDERSTATES_CACHED];

	IDirect3DBaseTexture9* mTextures[NUM_TEXTURES_CACHED];
	DWORD	mTextureStates[NUM_TEXTURES_CACHED][NUM_TEXSTATES_CACHED];
	BOOL	mGotTextureStates[NUM_TEXTURES_CACHED][NUM_TEXSTATES_CACHED];
	DWORD	mSamplerStates[NUM_SAMPLERS_CACHED][NUM_SAMPSTATES_CACHED];
	BOOL	mGotSamplerStates[NUM_SAMPLERS_CACHED][NUM_SAMPSTATES_CACHED];

	IDirect3DVertexShader9* mVShader;
	IDirect3DPixelShader9* mPShader;
};

}; // namespace

#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -