/usr/share/openscenegraph/examples/osgdepthpeeling/DePeePass.cpp is in openscenegraph-examples 3.2.0~rc1-4.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 | /*
Steffen Frey
Fachpraktikum Graphik-Programmierung 2007
Institut fuer Visualisierung und Interaktive Systeme
Universitaet Stuttgart
*/
#include "DePeePass.h"
#include <iostream>
#include <assert.h>
DePeePass::DePeePass()
{
root = new osg::Group;
}
DePeePass::~DePeePass()
{
root->releaseGLObjects();
assert(Cameras.size() == settingNodes.size());
while(!Cameras.empty())
{
remRenderPass((*Cameras.begin()).first);
}
}
void DePeePass::newRenderPass(MapMode mapMode)
{
Cameras[mapMode] = new osg::Camera;
settingNodes[mapMode] = new osg::Group;
root->addChild(Cameras[mapMode].get());
Cameras[mapMode]->addChild(settingNodes[mapMode].get());
}
void DePeePass::remRenderPass(MapMode mapMode)
{
assert(Cameras.find(mapMode) != Cameras.end());
Cameras[mapMode]->releaseGLObjects();
settingNodes[mapMode]->releaseGLObjects();
Cameras[mapMode]->removeChild(settingNodes[mapMode].get());
//setting Nodes have exactly one child
assert(settingNodes[mapMode]->getNumChildren() == 1);
settingNodes[mapMode]->removeChild(0,1);
Cameras.erase(Cameras.find(mapMode));
settingNodes.erase(settingNodes.find(mapMode));
}
|