|
|
@@ -32,35 +32,6 @@
|
|
|
namespace Urho3D
|
|
|
{
|
|
|
|
|
|
-static const VertexElement legacyVertexElements[] =
|
|
|
-{
|
|
|
- VertexElement(TYPE_VECTOR3, SEM_POSITION, 0, false), // Position
|
|
|
- VertexElement(TYPE_VECTOR3, SEM_NORMAL, 0, false), // Normal
|
|
|
- VertexElement(TYPE_UBYTE4_NORM, SEM_COLOR, 0, false), // Color
|
|
|
- VertexElement(TYPE_VECTOR2, SEM_TEXCOORD, 0, false), // Texcoord1
|
|
|
- VertexElement(TYPE_VECTOR2, SEM_TEXCOORD, 1, false), // Texcoord2
|
|
|
- VertexElement(TYPE_VECTOR3, SEM_TEXCOORD, 0, false), // Cubetexcoord1
|
|
|
- VertexElement(TYPE_VECTOR3, SEM_TEXCOORD, 1, false), // Cubetexcoord2
|
|
|
- VertexElement(TYPE_VECTOR4, SEM_TANGENT, 0, false), // Tangent
|
|
|
- VertexElement(TYPE_VECTOR4, SEM_BLENDWEIGHTS, 0, false), // Blendweights
|
|
|
- VertexElement(TYPE_UBYTE4, SEM_BLENDINDICES, 0, false), // Blendindices
|
|
|
- VertexElement(TYPE_VECTOR4, SEM_TEXCOORD, 4, true), // Instancematrix1
|
|
|
- VertexElement(TYPE_VECTOR4, SEM_TEXCOORD, 5, true), // Instancematrix2
|
|
|
- VertexElement(TYPE_VECTOR4, SEM_TEXCOORD, 6, true), // Instancematrix3
|
|
|
- VertexElement(TYPE_INT, SEM_OBJECTINDEX, 0, false) // Objectindex
|
|
|
-};
|
|
|
-
|
|
|
-static const unsigned elementTypeSize[] =
|
|
|
-{
|
|
|
- sizeof(int),
|
|
|
- sizeof(float),
|
|
|
- 2 * sizeof(float),
|
|
|
- 3 * sizeof(float),
|
|
|
- 4 * sizeof(float),
|
|
|
- sizeof(unsigned),
|
|
|
- sizeof(unsigned)
|
|
|
-};
|
|
|
-
|
|
|
VertexBuffer::VertexBuffer(Context* context, bool forceHeadless) :
|
|
|
Object(context),
|
|
|
GPUObject(forceHeadless ? (Graphics*)0 : GetSubsystem<Graphics>()),
|
|
|
@@ -344,13 +315,13 @@ void VertexBuffer::UpdateOffsets()
|
|
|
for (PODVector<VertexElement>::Iterator i = elements_.Begin(); i != elements_.End(); ++i)
|
|
|
{
|
|
|
i->offset_ = elementOffset;
|
|
|
- elementOffset += elementTypeSize[i->type_];
|
|
|
+ elementOffset += ELEMENT_TYPESIZES[i->type_];
|
|
|
elementHash_ <<= 6;
|
|
|
elementHash_ += (((int)i->type_ + 1) * ((int)i->semantic_ + 1) + i->index_);
|
|
|
|
|
|
for (unsigned j = 0; j < MAX_LEGACY_VERTEX_ELEMENTS; ++j)
|
|
|
{
|
|
|
- const VertexElement& legacy = legacyVertexElements[j];
|
|
|
+ const VertexElement& legacy = LEGACY_VERTEXELEMENTS[j];
|
|
|
if (i->type_ == legacy.type_ && i->semantic_ == legacy.semantic_ && i->index_ == legacy.index_)
|
|
|
elementMask_ |= (1 << j);
|
|
|
}
|
|
|
@@ -410,7 +381,7 @@ PODVector<VertexElement> VertexBuffer::GetElements(unsigned elementMask)
|
|
|
for (unsigned i = 0; i < MAX_LEGACY_VERTEX_ELEMENTS; ++i)
|
|
|
{
|
|
|
if (elementMask & (1 << i))
|
|
|
- ret.Push(legacyVertexElements[i]);
|
|
|
+ ret.Push(LEGACY_VERTEXELEMENTS[i]);
|
|
|
}
|
|
|
|
|
|
return ret;
|
|
|
@@ -421,7 +392,7 @@ unsigned VertexBuffer::GetVertexSize(const PODVector<VertexElement>& elements)
|
|
|
unsigned size = 0;
|
|
|
|
|
|
for (unsigned i = 0; i < elements.Size(); ++i)
|
|
|
- size += elementTypeSize[elements[i].type_];
|
|
|
+ size += ELEMENT_TYPESIZES[elements[i].type_];
|
|
|
|
|
|
return size;
|
|
|
}
|
|
|
@@ -433,7 +404,7 @@ unsigned VertexBuffer::GetVertexSize(unsigned elementMask)
|
|
|
for (unsigned i = 0; i < MAX_LEGACY_VERTEX_ELEMENTS; ++i)
|
|
|
{
|
|
|
if (elementMask & (1 << i))
|
|
|
- size += elementTypeSize[legacyVertexElements[i].type_];
|
|
|
+ size += ELEMENT_TYPESIZES[LEGACY_VERTEXELEMENTS[i].type_];
|
|
|
}
|
|
|
|
|
|
return size;
|