Trying to fix invalid descriptorlayout
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
#include "StaticMeshVertexInput.h"
|
||||
#include "Graphics/Graphics.h"
|
||||
|
||||
using namespace Seele;
|
||||
|
||||
@@ -13,36 +14,56 @@ StaticMeshVertexInput::~StaticMeshVertexInput()
|
||||
|
||||
}
|
||||
|
||||
void StaticMeshVertexInput::setPositionStream(const VertexStreamComponent& positionStream)
|
||||
void StaticMeshVertexInput::init(Gfx::PGraphics graphics)
|
||||
{
|
||||
declaration->addVertexStream(positionStream);
|
||||
positionDeclaration->addVertexStream(positionStream);
|
||||
data.positionStream = positionStream;
|
||||
if(data.positionStream.vertexBuffer != data.tangentBasisComponents[0].vertexBuffer)
|
||||
{
|
||||
Array<Gfx::VertexElement> positionOnlyStreamElements;
|
||||
positionOnlyStreamElements.add(accessPositionStreamComponent(data.positionStream, 0));
|
||||
|
||||
initPositionDeclaration(graphics, positionOnlyStreamElements);
|
||||
}
|
||||
|
||||
Array<Gfx::VertexElement> elements;
|
||||
if(data.positionStream.vertexBuffer != nullptr)
|
||||
{
|
||||
elements.add(accessStreamComponent(data.positionStream, 0));
|
||||
}
|
||||
|
||||
uint8 tangentBasisAttributes[2] = {1, 2};
|
||||
for(int32 axisIndex = 0; axisIndex < 2; axisIndex++)
|
||||
{
|
||||
if(data.tangentBasisComponents[axisIndex].vertexBuffer != nullptr)
|
||||
{
|
||||
elements.add(accessStreamComponent(data.tangentBasisComponents[axisIndex], tangentBasisAttributes[axisIndex]));
|
||||
}
|
||||
}
|
||||
|
||||
if(data.colorComponent.vertexBuffer != nullptr)
|
||||
{
|
||||
elements.add(accessStreamComponent(data.colorComponent, 3));
|
||||
}
|
||||
else
|
||||
{
|
||||
elements.add(accessStreamComponent(VertexStreamComponent(graphics->getNullVertexBuffer(), 0, 0, Gfx::SE_FORMAT_R32G32B32A32_SFLOAT), 3));
|
||||
}
|
||||
if(data.textureCoordinates.size())
|
||||
{
|
||||
const int32 baseTexCoordAttribute = 4;
|
||||
for(uint32 coordinateIndex = 0; coordinateIndex < data.textureCoordinates.size(); ++coordinateIndex)
|
||||
{
|
||||
elements.add(accessStreamComponent(
|
||||
data.textureCoordinates[coordinateIndex],
|
||||
baseTexCoordAttribute + coordinateIndex
|
||||
));
|
||||
}
|
||||
}
|
||||
initDeclaration(graphics, elements);
|
||||
}
|
||||
|
||||
void StaticMeshVertexInput::setTangentXStream(const VertexStreamComponent& tangentXStream)
|
||||
void StaticMeshVertexInput::setData(StaticMeshDataType data)
|
||||
{
|
||||
declaration->addVertexStream(tangentXStream);
|
||||
data.tangentBasisComponents[0] = tangentXStream;
|
||||
}
|
||||
|
||||
void StaticMeshVertexInput::setTangentZStream(const VertexStreamComponent& tangentZStream)
|
||||
{
|
||||
declaration->addVertexStream(tangentZStream);
|
||||
data.tangentBasisComponents[1] = tangentZStream;
|
||||
}
|
||||
|
||||
void StaticMeshVertexInput::setTexCoordStream(uint32 index, const VertexStreamComponent& textureStream)
|
||||
{
|
||||
//TODO: replace add with proper indexing
|
||||
declaration->addVertexStream(textureStream);
|
||||
data.textureCoordinates.add(textureStream);
|
||||
}
|
||||
|
||||
void StaticMeshVertexInput::setColorStream(const VertexStreamComponent& colorStream)
|
||||
{
|
||||
declaration->addVertexStream(colorStream);
|
||||
data.colorComponent = colorStream;
|
||||
this->data = data;
|
||||
}
|
||||
|
||||
IMPLEMENT_VERTEX_INPUT_TYPE(StaticMeshVertexInput, "StaticMeshVertexInput");
|
||||
Reference in New Issue
Block a user