固定的正交像机_用于观察采样贴图_为屏幕空间环境光遮蔽作准备

记录这种像机怎么设置 像机将会盯着承载采样贴图的面片不动code

osg::Camera* texCamera = new osg::Camera;
	texCamera->setGraphicsContext(gc);
	texCamera->setClearMask(GL_COLOR_BUFFER_BIT);
	texCamera->setClearColor(osg::Vec4(0.0, 0.0, 0.0, 0.0));
	texCamera->setReferenceFrame(osg::Camera::ABSOLUTE_RF);
	texCamera->setViewport(0, 0, 800, 600);
	texCamera->setDrawBuffer(GL_BACK);
	texCamera->setReadBuffer(GL_BACK);
	texCamera->addChild(geodeQuad);
	texCamera->setAllowEventFocus(false);
	texCamera->setCullingMode(osg::CullSettings::NO_CULLING);
	texCamera->setProjectionResizePolicy(osg::Camera::FIXED);
	viewer1->setCamera(texCamera);

面片的代码:get

#include <osg/Texture2D>
osg::Geode* createTextureQuad(osg::Texture2D *texture)
{
	osg::Vec3Array *vertices = new osg::Vec3Array;
	vertices->push_back(osg::Vec3(-1.0, -1.0, 0.0));
	vertices->push_back(osg::Vec3(1.0, -1.0, 0.0));
	vertices->push_back(osg::Vec3(1.0, 1.0, 0.0));
	vertices->push_back(osg::Vec3(-1.0, 1.0, 0.0));

	osg::Vec2Array *texcoord = new osg::Vec2Array;
	texcoord->push_back(osg::Vec2(0.0, 0.0));
	texcoord->push_back(osg::Vec2(1.0, 0.0));
	texcoord->push_back(osg::Vec2(1.0, 1.0));
	texcoord->push_back(osg::Vec2(0.0, 1.0));

	osg::Geometry *geom = new osg::Geometry;
	geom->setVertexArray(vertices);
	geom->setTexCoordArray(0, texcoord);
	geom->addPrimitiveSet(new osg::DrawArrays(GL_QUADS, 0, 4));

	osg::Geode *geode = new osg::Geode;
	geode->addDrawable(geom);
	geode->getOrCreateStateSet()->setTextureAttributeAndModes(0, texture, osg::StateAttribute::ON);

	return geode;
}

这两段是从osgfpdepth.cpp中抄来的, 这个OSG例子的目的是使用显卡的多重采样抗锯齿的功能.it

相关文章
相关标签/搜索