| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122 |
- #include "Base.h"
- #include "VertexFormat.h"
- namespace gameplay
- {
- VertexFormat::VertexFormat(const Element* elements, unsigned int elementCount)
- : _vertexSize(0)
- {
- // Copy elements and compute vertex size
- for (unsigned int i = 0; i < elementCount; ++i)
- {
- // Copy element
- Element element;
- memcpy(&element, &elements[i], sizeof(Element));
- _elements.push_back(element);
- _vertexSize += element.size * sizeof(float);
- }
- }
- VertexFormat::~VertexFormat()
- {
- }
- const VertexFormat::Element& VertexFormat::getElement(unsigned int index) const
- {
- assert(index < _elements.size());
- return _elements[index];
- }
- unsigned int VertexFormat::getElementCount() const
- {
- return _elements.size();
- }
- unsigned int VertexFormat::getVertexSize() const
- {
- return _vertexSize;
- }
- bool VertexFormat::operator == (const VertexFormat& f) const
- {
- if (_elements.size() != f._elements.size())
- return false;
- for (unsigned int i = 0, count = _elements.size(); i < count; ++i)
- {
- if (_elements[i] != f._elements[i])
- return false;
- }
- return true;
- }
- bool VertexFormat::operator != (const VertexFormat& f) const
- {
- return !(*this == f);
- }
- VertexFormat::Element::Element() :
- usage(POSITION), size(0)
- {
- }
- VertexFormat::Element::Element(Usage usage, unsigned int size) :
- usage(usage), size(size)
- {
- }
- bool VertexFormat::Element::operator == (const VertexFormat::Element& e) const
- {
- return (size == e.size && usage == e.usage);
- }
- bool VertexFormat::Element::operator != (const VertexFormat::Element& e) const
- {
- return !(*this == e);
- }
- const char* VertexFormat::toString(Usage usage)
- {
- switch (usage)
- {
- case POSITION:
- return "POSITION";
- case NORMAL:
- return "NORMAL";
- case COLOR:
- return "COLOR";
- case TANGENT:
- return "TANGENT";
- case BINORMAL:
- return "BINORMAL";
- case BLENDWEIGHTS:
- return "BLENDWEIGHTS";
- case BLENDINDICES:
- return "BLENDINDICES";
- case TEXCOORD0:
- return "TEXCOORD0";
- case TEXCOORD1:
- return "TEXCOORD1";
- case TEXCOORD2:
- return "TEXCOORD2";
- case TEXCOORD3:
- return "TEXCOORD3";
- case TEXCOORD4:
- return "TEXCOORD4";
- case TEXCOORD5:
- return "TEXCOORD5";
- case TEXCOORD6:
- return "TEXCOORD6";
- case TEXCOORD7:
- return "TEXCOORD7";
- default:
- return "UNKNOWN";
- }
- }
- }
|