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

📄 rendercontext.h

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

#ifndef __RENDER_CONTEXT_H
#define __RENDER_CONTEXT_H


#include "RenderCamera.h"
#include "../utils/Notifier.h"
#include "EffectParams.h"

namespace dingus {

class CRenderContext;
class CRenderable;


/**
 *  Gets notified when scene rendering occurs.
 */
class IRenderContextListener {
public:
	virtual ~IRenderContextListener() = 0 {};
	
	virtual void beforeRendering( CRenderContext& ctx ) = 0;
	virtual void afterRendering( CRenderContext& ctx ) = 0;
};



class CRenderContext : public CNotifier<IRenderContextListener> {
public:
	CRenderContext( CD3DXEffect& globalFx );

	void attach( CRenderable& r ) { mRenderables.push_back(&r); };
	void clear() { mRenderables.clear(); };

	void perform();

	const CRenderCamera& getCamera() const { return mRenderCamera; };
	CRenderCamera& getCamera() { return mRenderCamera; };
	
	CEffectParams const& getGlobalParams() const { return mGlobalParams; };
	CEffectParams& getGlobalParams() { return mGlobalParams; };

	//
	// "direct" rendering

	void directBegin();
	void directRender( CRenderable& r );
	void directEnd();
	int directSetFX( CD3DXEffect& fx ); // returns pass count-1
	void directFXPassBegin( int pass );
	void directFXPassEnd();
	
private:
	void	sortRenderables();
	void	renderRenderables();

	/// Notifies IRenderContextListeners
	void beforeRendering();
	/// Notifies IRenderContextListeners
	void afterRendering();

private:
	typedef std::vector<CRenderable*>	TRenderableVector;
private:
	TRenderableVector	mRenderables;
	CRenderCamera		mRenderCamera;

	CEffectParams		mGlobalParams;
	CD3DXEffect*		mGlobalEffect;

	// direct rendering part
	bool			mInsideDirect;
	CD3DXEffect*	mDirectCurrFX;
	int				mDirectCurrPasses;
};


}; // namespace

#endif

⌨️ 快捷键说明

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