Trying to fix invalid descriptorlayout

This commit is contained in:
Dynamitos
2020-10-03 11:00:10 +02:00
parent 79388bf41a
commit ceee96b462
69 changed files with 1087 additions and 393 deletions
+47 -26
View File
@@ -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");