terrainTest/ShaderPostProcess.cpp

44 lines
1.4 KiB
C++

#include "ShaderPostProcess.h"
CShaderPostProcess::CShaderPostProcess(IrrlichtDevice* device, const core::stringc& name,
io::path vsFile, core::stringc vsEntry, video::E_VERTEX_SHADER_TYPE vsType,
io::path psFile, core::stringc psEntry, video::E_PIXEL_SHADER_TYPE psType,
video::E_MATERIAL_TYPE baseMaterial)
: IPostProcess(name), Device(device)
{
// get the shader material fomr the material manager
ShaderMaterial = new CShaderMaterial(device, name, vsFile, vsEntry, vsType, psFile, psEntry, psType, baseMaterial);
// set material parameters
getMaterial().Lighting = false;
getMaterial().BackfaceCulling = false;
getMaterial().ZBuffer = video::ECFN_NEVER;
}
CShaderPostProcess::~CShaderPostProcess()
{
// drop the shader material
if (ShaderMaterial) {
delete ShaderMaterial;
ShaderMaterial = NULL;
}
}
void CShaderPostProcess::render()
{
// clear the projection matrix
Device->getVideoDriver()->setTransform(video::ETS_PROJECTION, core::IdentityMatrix);
// clear the view matrix
Device->getVideoDriver()->setTransform(video::ETS_VIEW, core::IdentityMatrix);
// set the transform
Device->getVideoDriver()->setTransform(video::ETS_WORLD, core::IdentityMatrix );
// select the post proc material
Device->getVideoDriver()->setMaterial(getMaterial());
// render the screen quad
Device->getVideoDriver()->drawIndexedTriangleList(Vertices, 4, Indices, 2);
}