bluecore/engine/RenderQueue.cpp

54 líneas
1.2 KiB
C++

2008-01-17 17:42:24 +01:00
#include "RenderQueue.h"
namespace BlueCore
{
void RenderQueue::addOpaqueItem(RenderItem *item, const Vector3& position,
const Quaternion& orientation)
{
_OpaqueItems.push_back(QueueItem(item, position, orientation));
}
void RenderQueue::addTransparentItem(RenderItem *item, const Vector3& position,
const Quaternion& orientation)
{
_TransparentItems.push_back(QueueItem(item, position, orientation));
}
const std::list<RenderQueue::QueueItem>& RenderQueue::getOpaqueItems()
{
return _OpaqueItems;
}
const std::list<RenderQueue::QueueItem>& RenderQueue::getTransparentItems()
{
return _TransparentItems;
}
void RenderQueue::clear()
{
_OpaqueItems.clear();
_TransparentItems.clear();
}
void RenderQueue::render(RenderDevice *device) const
{
std::list<QueueItem>::const_iterator i;
for (i = _OpaqueItems.begin(); i != _OpaqueItems.end(); i++)
{
2008-01-18 14:00:18 +01:00
device->pushTransformation((*i).position, (*i).orientation);
2008-01-17 17:42:24 +01:00
(*i).item->render(device);
2008-01-18 14:00:18 +01:00
device->popTransformation();
2008-01-17 17:42:24 +01:00
}
for (i = _TransparentItems.begin(); i != _TransparentItems.end(); i++)
{
2008-01-18 14:00:18 +01:00
device->pushTransformation((*i).position, (*i).orientation);
2008-01-17 17:42:24 +01:00
(*i).item->render(device);
2008-01-18 14:00:18 +01:00
device->popTransformation();
2008-01-17 17:42:24 +01:00
}
}
}