#include "gpuCacheUnitBoundingBox.h"
namespace GPUCache {
std::shared_ptr<const IndexBuffer> UnitBoundingBox::fBoundingBoxIndices;
std::shared_ptr<const VertexBuffer> UnitBoundingBox::fBoundingBoxPositions;
{
return sBoundingBox;
}
std::shared_ptr<const IndexBuffer>& UnitBoundingBox::indices()
{
if (!fBoundingBoxIndices) {
const IndexBuffer::index_t indices[24] = {
0, 1, 1, 2, 2, 3, 3, 0,
4, 5, 5, 6, 6, 7, 7, 4,
0, 4, 1, 5, 2, 6, 3, 7
};
boost::shared_array<IndexBuffer::index_t> indicesArray(new IndexBuffer::index_t[24]);
memcpy(indicesArray.get(), indices, sizeof(IndexBuffer::index_t)*24);
fBoundingBoxIndices = IndexBuffer::create(
SharedArray<IndexBuffer::index_t>::create(indicesArray, 24));
}
return fBoundingBoxIndices;
}
std::shared_ptr<const VertexBuffer>& UnitBoundingBox::positions()
{
if (!fBoundingBoxPositions) {
const float positions[24] = {
-1.0f, -1.0f, -1.0f,
-1.0f, -1.0f, 1.0f,
1.0f, -1.0f, 1.0f,
1.0f, -1.0f, -1.0f,
-1.0f, 1.0f, -1.0f,
-1.0f, 1.0f, 1.0f,
1.0f, 1.0f, 1.0f,
1.0f, 1.0f, -1.0f,
};
boost::shared_array<float> positionsArray(new float[24]);
memcpy(positionsArray.get(), positions, sizeof(float)*24);
fBoundingBoxPositions = VertexBuffer::createPositions(
SharedArray<float>::create(positionsArray, 24));
}
return fBoundingBoxPositions;
}
void UnitBoundingBox::clear()
{
fBoundingBoxIndices.reset();
fBoundingBoxPositions.reset();
}
{
boundingBox.
depth() / 2.0f);
boundingBoxMatrix[3][0] = offset[0];
boundingBoxMatrix[3][1] = offset[1];
boundingBoxMatrix[3][2] = offset[2];
boundingBoxMatrix[0][0] = scale[0];
boundingBoxMatrix[1][1] = scale[1];
boundingBoxMatrix[2][2] = scale[2];
return boundingBoxMatrix;
}
}