Beispiel #1
0
		// construct/destroy
		ViewContext::ViewContext(Base &base, const math::ViewFrustum<> &frustum) :
			base(base), frustum(frustum), frameSaver(base), clipSaver(base)
		{
			// clear frame
			Base::ClipSaver clipSaver(base);
			base.PushClip(math::Aabb<2>(0, 1));
			base.Clear();
			clipSaver.Reset();
			// setup aspect ratio
			float aspect = base.GetFrameAspect();
			if (aspect != frustum.aspect)
			{
				base.PushFrame(math::Aabb<2>(-.5, .5) * math::Vec2(
					std::min(frustum.aspect / aspect, 1.f),
					std::min(aspect / frustum.aspect, 1.f)) + .5f);
				base.PushClip(math::Aabb<2>(0, 1));
			}
		}