Render target water
This commit is contained in:
@@ -4,15 +4,35 @@
|
||||
class App;
|
||||
class Water : public Ogre::FrameListener, Ogre::RenderTargetListener {
|
||||
Ogre::SceneManager *mScnMgr;
|
||||
Ogre::RenderWindow * mWindow;
|
||||
Ogre::SceneNode *mWaterNode, *mCameraNode;
|
||||
Ogre::Vector3 mCameraPosition;
|
||||
Ogre::Camera *mCamera;
|
||||
Ogre::Plane mWaterPlane;
|
||||
Ogre::Plane mWaterPlane,
|
||||
mReflectionPlane,
|
||||
mReflectionClipPlaneAbove,
|
||||
mReflectionClipPlaneBelow,
|
||||
mRefractionClipPlaneAbove,
|
||||
mRefractionClipPlaneBelow;
|
||||
bool mAbove;
|
||||
std::vector<Ogre::Entity *> mWaterMeshes;
|
||||
// Reflection
|
||||
Ogre::RenderTexture * mReflectionTexture;
|
||||
Ogre::Camera * mReflectionCamera;
|
||||
// Refraction
|
||||
Ogre::RenderTexture * mRefractionTexture;
|
||||
Ogre::Camera * mRefractionCamera;
|
||||
bool mInRefTexUpdate;
|
||||
Ogre::Timer mtexture_dump;
|
||||
void create_cameras();
|
||||
|
||||
public:
|
||||
Water();
|
||||
virtual ~Water();
|
||||
void createWater(Ogre::Camera *camera);
|
||||
void create_textures();
|
||||
void dump_textures();
|
||||
void createWater(Ogre::RenderWindow * window, Ogre::Camera *camera);
|
||||
void init();
|
||||
void updateWater(float delta);
|
||||
bool frameEnded(const Ogre::FrameEvent &evt) override;
|
||||
bool frameRenderingQueued(const Ogre::FrameEvent &evt) override;
|
||||
@@ -22,4 +42,4 @@ public:
|
||||
void add_submerged_entity(Ogre::Entity *ent);
|
||||
void add_surface_entity(Ogre::Entity *ent);
|
||||
};
|
||||
#endif
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user